notepad--/cmake/NoteadPlugin-Linux-Developm...

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