
为了便于跨平台(甚至只是跨机器),不建议指定具体的库目录,而是使用 find_package 让 CMake 去寻找这个库。当然 find_package 没有带对应的 .cmake 模块的时候,可以用 pkg_config 代替。
对于 boost,只要使用 find_package 即可。如:
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.57.0 COMPONENTS log thread system regex REQUIRED)
就是指定了使用静态链接的 boost,并尝试寻找 boost 的 log, thread, system, regex 这些库。
然后再使用 target_link_libraries(MyTarget ${Boost_LIBRARIES}) 就可以指定让 MyTarget 这个目标链接到找到的库。
在windows环境下生成的动态库是 dll在linux下生成so
在mac下生成的是dylib
所以对于Android的开发者来说,还是要用ndk的工具
把在idea生成的.h文件粘贴到clion的项目中就可以了,
如果找不到jni.h可以在CMakeList.txt中添加对jni.h文件的引用
如下:
后面三行根据jdk的实际位置填写,作用是导入jni相关的头文件;其他的 *** 作系统可能不完全一致
复制.h头文件 com_shenby_jni_JniExample.h
实现该文件定义的函数 com_shenby_jni_JniExample.c
在CMakeList.txt中添加生成动态共项库
add_library:生成一个库,add_executable:生成一个可执行文件
hello:是生成共享库的名字,前面会自动加上lib前缀,如这里windows生成的是 libhello.dll
SHARED:库的类型为动态,windows上生成.dll,而STATIC 则是生成静态库,windows生成.a文件
com_shenby_jni_JniExample.c :c源文件,多个文件就添加在后面,切记不能添加上面的com_shenby_jni_JniExample.h
文件,否则生成的库中的函数为空
结果如下
就可以把该dll文件粘贴到idea的项目根目录中运行了
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)