插件开发
通过插件开发工程
- 进入工程创建页面。
- MindStudio欢迎界面:单击“New Project”。
- MindStudio工程界面:在顶部菜单栏中选择 。
- 在“New Project”窗口中,选择“Ascend App”,选择工程类型,如图1。(若工程类型名称显示不全,鼠标悬停于工程类型名称处,则工程类型名称可以完整显示。)
CANN Version:当前激活的CANN版本,可通过单击右侧“Change”进行变更,具体功能使用请参见切换/激活CANN包。
如未在MindStudio中配置CANN,部分应用工程可能无法正常显示。
- MindX SDK Plugin:MindX SDK插件开发空白工程。仅包括开发框架的工程,不含具体的代码逻辑。
- MxpiSamplePlugin:MindX SDK插件开发样例工程。
- 单击“Next”,进入配置工程相关参数。如表1所示。
表1 工程参数说明 参数
说明
Project name
工程名称,自行配置。
Project location
工程默认保存路径,用户可自定义。(对于首次使用MindStudio的用户,该项默认为“$HOME/MindstudioProjects”。)
More Settings
“Module name”:模块名,默认与“Project name”一致。
“Content root”:根目录下路径。
“Module file location”:模块文件路径。
单击“Project format”右侧选框,出现下拉菜单。- .idea(directory-based):创建项目的时候创建一个.idea的项目录来保存项目的信息,默认选项。
- .ipr(file-based):项目配置文件来保存项目的配置信息。
- 单击“Finish”,完成工程创建。成功创建工程后,工程目录的主要结构如下,请以实际创建结果为准。
- MindX SDK Plugin:
请用户将MindX SDK插件开发空白工程的工程名(也就是以下工程目录中的工程名)设置为开发的插件的名称。
├── 工程名 ├── build //存放cmake依赖文件。 ├── lib │ └── plugins //开发的插件so文件的存放目录。 ├── src │ └── 工程名 │ ├── CMakeLists.txt //编译脚本。 │ ├── 工程名.cpp //主函数的实现文件。 │ └── 工程名.h //主函数的依赖头文件。 └── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件。
- MxpiSamplePlugin:
├── 工程名 ├── build //存放cmake依赖文件。 ├── lib │ └── plugins //开发的插件so文件的存放目录。 ├── src │ └── mxpi_sampleplugin │ ├── CMakeLists.txt //编译脚本。 │ ├── MxpiSamplePlugin.cpp //主函数的实现文件。 │ └── MxpiSamplePlugin.h //主函数的依赖头文件。 └── CMakeLists.txt //编译脚本,调用src目录下的CMakeLists文件。
- MindX SDK Plugin:
- 插件开发空工程的代码实现请参见《mxManufacture 用户指南》或《mxVision 用户指南》的“插件开发介绍”章节。
插件开发样例工程的具体代码实现请查看工程文件下的MxpiSamplePlugin.cpp(主函数的实现文件)和MxpiSamplePlugin.h(主函数的依赖头文件)。
- 插件开发编译,以插件开发样例工程为例。
通过新增插件模板
- 在新建空白工程MindX SDK Project(C/C++)或样例工程Detection and Classification(C++)后,在IDE页面内的工程目录处右键工程名,选择图3弹窗。 会出现如
- “Plugin Name”:插件名称,用户自行定义。
- “Plugin Path”:插件创建目录,建议放在工程下的“plugin”目录,若目录不存在请自行创建。
- 创建完成后会在工程目录中生成如下目录层级,Plugin Name为图3中用户设定的插件名称。
└── plugin └── Plugin Name // 插件模板。 ├── Plugin Name.cpp ├── Plugin Name.h └── CMakeLists.txt
- 在工程根目录下的“CMakeLists.txt”(图中标号“1”所示文件)或在“C++”目录中的“CMakeLists.txt”(图中标号“2”所示文件)新增插件的“CMakeLists.txt”(图中标号“3”所示文件)所在的位置,将新增插件加入编译过程。
以新增插件mxpi_sample为填写示例。
- 在“工程文件根目录”下的“CMakeLists.txt”中加入:
add_subdirectory("./plugin/mxpi_sample")
“./plugin/mxpi_sample”为新增插件的“CMakeLists.txt”相对于“工程文件根目录”下的“CMakeLists.txt”所在的路径。
- 在工程文件下C++目录下的“CMakeLists.txt”中加入:
add_subdirectory("../plugin/mxpi_sample")
“../plugin/mxpi_sample”为新增插件的“CMakeLists.txt”相对于在工程文件下C++目录下的“CMakeLists.txt”所在的路径。
图4 add_subdirectory - 在“工程文件根目录”下的“CMakeLists.txt”中加入:
- 编译完成后的.so文件在“工程文件根目录/lib/plugins”生成,并将文件权限设置为“640”。
- 请用户参照《mxManufacture 用户指南》或《mxVision 用户指南》的“插件开发介绍”章节,完成插件开发。
父主题: 基于MindX SDK开发应用