首先,我必须说,我是c ++中的绝对初学者以及正在进行原生开发的所有编译器。
我实际上要做的是创建一个NodeJS绑定,以包装现有的库。库本身有一个 api.h ,我可以在我的包装器中包含它来构建我的Wrapper方法。我遇到的问题是库本身很大:
src/
vendor/
libA/..
libB/..
libC/..
api.h
api.cpp
addon.cpp (where I am including the "vendor/api.h")
所以每次我编译我的addon.cpp时,所有的库都必须一次又一次地重新编译,这很糟糕。那么编译api一次并在我的addon.cpp中使用它的最佳方法是什么(我没有在我的插件中使用任何libs只有api.h!)
顺便说一句,我正在使用 Ubuntu 14.04,而我正在使用Cmake 来执行编译:
要使用所有库编译我的插件,我正在定义所有SOURCE_FILES:
file(GLOB SOURCE_FILES
"src/addon.cpp"
"src/vendor/*.cpp" "src/vendor/*.h"
"src/vendor/libA/*.c" "src/vendor/libA/*.h"
"src/vendor/libB/*.cpp" "src/vendor/libB/*.h"
"src/vendor/libC/*.c" "src/vendor/libC/*.h"
)
...
add_library(addon SHARED ${SOURCE_FILES})
要编译它,我正在调用
cmake-js rebuild
cmake-js因为它还加载了一些NodeJS所需的东西,但CMakeLists.txt文件使用了正常的cmake语法
所以任何帮助都会非常棒,谢谢!
答案 0 :(得分:-1)
实际上你正在以错误的方式使用你的编译器来获取nodejs。当你处于原型设计的早期阶段时,你不应该使用(思考,尝试,编译,观察,验证,反馈,修改,编译......)的方法。
当你进行原型设计时,你应该创建一个空的DLL,它将在运行时加载/释放functionnaly的内部代码。在Windows上,该函数是LoadLibrary / FreeLibrary。
这样做,将允许您使用迭代方法来修复您的问题,即脚本功能。
完成原型设计后,在该函数之上创建测试函数,该函数将持久保存有效域和结果,并将代码移动到DLLloader中。
避免Cmake是一种懒惰的编译方式,一个简单的命令行应该编译你的dll。既然你要打造原型,不要使用cmake。打开记事本并使用命令行生成模块。
因此,您不仅会使用简单的记事本或记事本++,而且您将获得最大的速度,并且根本不需要调试器。
所以不需要再重新编译,及时的原型能力,实时修复和测试。