mirror of https://gitee.com/cxasm/notepad--.git
6.7 KiB
6.7 KiB
NotepadPlugin 开发说明
当前插件实现的提供 Linux 层开发说明
-
引用 NotepadPluginConfig.cmake 中的说明
# NotepadPluginConfig.cmake # 用于 Notepad-- 插件实现的 CMake 模块初级定义 # 在 Linux 中,它的布局应该如下: # /usr/lib/x86_64-linux-gnu/cmake/NotepadPlugin/NotepadPluginConfig.cmake # 在 插件开发层中,它的使用如下: # 1. 查找 NotepadPlugin 模块 # find_package(NotepadPlugin) # 2. 使用 add_notepad_plugin(<模块名称> <源代码、资源文件> [...]) # add_notepad_plugin(<plugin_name> <plugin_srcs> ...)
-
着手进行实现插件
将项目中的 src/plugin/helloworld 复制为单个项目,并使用 CMake 进行构建
cmake_minimum_required(VERSION 3.5.1) project(template LANGUAGES CXX VERSION 0.0.1) # 1. 查找 NotepadPlugin 模块 find_package(NotepadPlugin REQUIRED) # 2. 使用 add_notepad_plugin(<模块名称> <源代码、资源文件> [...]) add_notepad_plugin(Helloworld helloworld/helloworldexport.cpp helloworld/qttestclass.cpp helloworld/qttestclass.h helloworld/qttestclass.ui ) # 以上将会构建出一个名叫 libHelloworld.so 的插件扩展
-
一些 NotepadPluginConfig.cmake 中的变量声明
# NOTEPAD_PLUGIN [不重要]CMake 模块名称 # NOTEPAD_PLUGIN_CONFIG [不重要]CMake 模块文件名名称 # NOTEPAD_PLUGIN_INCLUDEDIR [插件 头文件目录]插件开发者可自行使用 # NOTEPAD_PLUGIN_LIBDIR [插件 库存放目录]插件开发者可自行使用 # NOTEPAD_PLUGIN_CORELIB [插件 核心库名称]插件开发者可自行使用 # NOTEPAD_PLUGIN_EXTERNAL_INCLUDES [插件 扩展的头文件目录]插件开发者可自行使用 # NOTEPAD_PLUGIN_EXTERNAL_PLUGIN_INSTALL_DIRECTORY [插件 扩展插件安装目录(位置)]插件开发者可自行使用 # NOTEPAD_BUILD_BY_QT5 # NOTEPAD_BUILD_BY_QT6 [NOTEPAD_BUILD_BY_约定]如果在构建 Notepad-- 时开启了此项,将会向 CMake 构建系统询问相关模块 例如: 询问 Qt5 基本模块: 将会在 find_package(NotepadPlugin REQUIRED) 时自动加入 set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) find_package(Qt5 COMPONENTS Core Widgets REQUIRED) 为开发者自动添加 Qt5 模块依赖: 将会在 add_notepad_plugin 时自动加入 if(NOTEPAD_PLUGIN_QT5) target_link_libraries(${PLUGIN_VAR} Qt5::Core Qt5::Widgets) endif(NOTEPAD_PLUGIN_QT5)
-
当前提供插件的 Linux 目录结构
build/_CPack_Packages/Linux/DEB/notepad---1.22.0-Linux ├── control ├── control.tar.gz ├── data.tar.gz ├── debian-binary ├── md5sums └── usr ├── bin │ └── notepad-- ├── include │ └── NotepadPlugin │ ├── pluginGl.h │ └── Qsci │ ├── qsciabstractapis.h │ ├── qsciapis.h │ ├── qscicommand.h │ ├── qscicommandset.h │ ├── qscidocument.h │ ├── qsciglobal.h │ ├── qscilexerasm.h │ ├── qscilexeravs.h │ ├── qscilexerbash.h │ ├── qscilexerbatch.h │ ├── qscilexercmake.h │ ├── qscilexercoffeescript.h │ ├── qscilexercpp.h │ ├── qscilexercsharp.h │ ├── qscilexercss.h │ ├── qscilexercustom.h │ ├── qscilexerd.h │ ├── qscilexerdiff.h │ ├── qscilexeredifact.h │ ├── qscilexerfortran77.h │ ├── qscilexerfortran.h │ ├── qscilexerglobal.h │ ├── qscilexergo.h │ ├── qscilexer.h │ ├── qscilexerhtml.h │ ├── qscilexeridl.h │ ├── qscilexerjava.h │ ├── qscilexerjavascript.h │ ├── qscilexerjson.h │ ├── qscilexerlua.h │ ├── qscilexermakefile.h │ ├── qscilexermarkdown.h │ ├── qscilexermatlab.h │ ├── qscilexernsis.h │ ├── qscilexeroctave.h │ ├── qscilexerpascal.h │ ├── qscilexerperl.h │ ├── qscilexerpo.h │ ├── qscilexerpostscript.h │ ├── qscilexerpov.h │ ├── qscilexerproperties.h │ ├── qscilexerpython.h │ ├── qscilexerruby.h │ ├── qscilexerrust.h │ ├── qscilexerspice.h │ ├── qscilexersql.h │ ├── qscilexertcl.h │ ├── qscilexertex.h │ ├── qscilexertext.h │ ├── qscilexervb.h │ ├── qscilexerverilog.h │ ├── qscilexervhdl.h │ ├── qscilexerxml.h │ ├── qscilexeryaml.h │ ├── qscimacro.h │ ├── qsciprinter.h │ ├── qsciscintillabase.h │ ├── qsciscintilla.h │ ├── qscistyledtext.h │ └── qscistyle.h ├── lib │ ├── cmake │ │ └── NotepadPlugin │ │ └── NotepadPluginConfig.cmake │ └── NotepadPlugin │ └── libQSci.a └── share ├── applications │ └── notepad--.desktop └── notepad-- └── icons └── spark.png 13 directories, 71 files