插件编译

CMakeLists.txt文件配置

主要用于设置插件名、添加生成插件动态库的目标文件以及链接相关的第三方库,每一个插件都有一个CMakeLists.txt文件与之对应。对于新增插件的CMakeLists.txt文件,用户只需修改生成的插件名和生成插件的目标文件即可,沿用原有插件的其他配置。以mxpi_sampleplugin插件为例,示例操作如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
set(PLUGIN_NAME "mxpi_sampleplugin")
set(TARGET_LIBRARY ${PLUGIN_NAME})

add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
add_compile_options(-std=c++14 -fPIC -fstack-protector-all -pie -Wno-deprecated-declarations)
add_link_options(-Wl,-z,relro,-z,now,-z,noexecstack -s -pie)
add_compile_options("-DPLUGIN_NAME=${PLUGIN_NAME}")
add_definitions(-DENABLE_DVPP_INTERFACE)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_library(${TARGET_LIBRARY} SHARED MxpiSamplePlugin.cpp)

target_link_libraries(${TARGET_LIBRARY} glib-2.0 gstreamer-1.0 gobject-2.0 gstbase-1.0 gmodule-2.0)
target_link_libraries(${TARGET_LIBRARY} mxpidatatype plugintoolkit mxbase mindxsdk_protobuf)

其中,“mxpi_sampleplugin”和“MxpiSamplePlugin.cpp”分别代表生成的插件名和生成插件的目标文件。其他的配置沿用原有的插件。

命令行编译

命令行编译主要根据“CMakeLists.txt”文件的配置,进行插件的编译和生成。

  1. 新建“MxpiSamplePlugin”目录。

    1
    2
    cd {sdk_install_path}/samples/
    mkdir MxpiSamplePlugin
    

    {sdk_install_path}Vision SDK软件包的安装路径。

  2. 进入到“MxpiSamplePlugin”目录下。

    1
    cd MxpiSamplePlugin
    

  3. 将插件头文件、源文件和CMakeLists.txt文件存放至“MxpiSamplePlugin”目录。
  4. 新建一个“build”文件夹,并跳转到“build”文件夹中。

    1
    2
    mkdir build
    cd build
    

  5. 创建Makefile文件,避免污染项目的“CMakeLists.txt”

    1
    cmake ..
    

  6. 根据生成的Makefile文件编译项目。

    1
    make -j
    

  7. 将生成插件的.so文件权限设置为“440”并拷贝至“plugins”目录下。

    1
    2
    chmod 440 libmxpi_sampleplugin.so
    cp libmxpi_sampleplugin.so ../../../lib/plugins/