-
Notifications
You must be signed in to change notification settings - Fork 150
CreateProject
makeplugin.py 的功能:复制一个工程的所有文件到新的目录,然后替换文件名和文件内容(将包和工程名替换为新的)。
在运行 makeplugin.py 之前先确保已安装 python。可将*.py文件关联到Python.exe,这样双击py文件就可直接运行。
运行 tools/makeplugin.py 后按照提示就可创建出一个新工程。 对提示信息说明如下:
- Project name: 输入新工程名,不含有目录、空格、特殊字符,例如 mytool 。
- Target package name (example): 输入新工程所在的包的名称,不含有目录、空格、特殊字符,如果为空则取为example,如果对应包目录不存在则自动创建目录。
- Template project name (pltempl): 输入已存在的模板工程的名称,如果为空则取为pltempl。将复制模板工程文件到新工程目录下。
- Template package name (example): 输入模板工程所在的包的名称,如果为空则取为example。
- Need swig (y/n) ? (n): 如果需要同时创建SWIG工程则输入 y ,否则回车。
使用 VC++ 的向导创建工程(MFC App、MFC DLL、Win32 DLL、ActiveX、ATL、Console 等)后,按照下列步骤可配置为插件工程。
-
在工程属性中加入包含路径
包含内核接口目录
..\..\interface\core
和其他必要的包的接口目录,例如..\..\interface\yourpackage
,需要根据实际目录情况来设置 interface 目录的相对目录名。如果不想为每个新建的工程设置接口包含目录,可以把..\..\interface\core
或其绝对地址添加到 VC++ Tools 全局选项的 Include Files 中。 -
包含插件实现文件
在工程的一个CPP文件(例如 projectname.cpp 、 dllmain.cpp、main.cpp 或 module.cpp)中,包含下面的代码就可实现一个最简单的插件:
#include <module/pluginimpl.h> #include <module/modulemacro.h> //#include "yourclass.h" XBEGIN_DEFINE_MODULE() //XDEFINE_CLASSMAP_ENTRY(yourclass) XEND_DEFINE_MODULE_DLL() OUTAPI bool x3InitializePlugin() { return true; } OUTAPI void x3UninitializePlugin() { }
编译时可能会遇到“theApp已定义”、“DllMain已定义”的错误,请按照 modulemacro.h 中相关注释修正,通常都是去掉向导生成的代码或者改为使用XEND_DEFINE_MODULE()并调用x3DllMain()或x3InitPlugin()。
如果不需要实现任何接口,则可以只包含下面更简单的代码:
#include <module/pluginimpl.h> #include <module/modulemacro.h> XDEFINE_EMPTY_MODULE()
提示:由于VC++向导生成的CPP文件一般都先包含stdafx.h,因此 module/plugininc.h 文件无论包含与否都可。使用VC++时可以不需要 module/plugininc.h 和 interface\core\portability 目录。
-
Create a new project using the wizard such as 'Shared library'.
- Language: C++.
- Let's assume the position of new project is
x3py/projects/codeblocks
.
-
Set the project build options (Search directories | Compiler).
../../../interface/core
and your customized paths such as../../../interface/example
. -
Add *.h and *.cpp files of your plugin, such as
x3py/source/example/plsimple
.