打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JNI通过构建工具封装Swig一步生成.so
#指定CMake的最小版本 cmake_minimum_required(VERSION 3.4.1) #需要修改的地方 #1.指定Swig生成的java接口的包名,修改"com.geo.earthworklib"即可,生成的位置在app/src/main/java目录下面 set(JAVA_GEN_PACKAGE "com.cjh.hello") #2.指定最终生成的.so的名称 set(LAST_SO_NAME "hello") #寻找安装好的swig,其实就是去电脑中找你安装好的Swig环境,所以我们需要提前安装环境。 find_package(SWIG REQUIRED) include(${SWIG_USE_FILE}) #这是Swing的命令,其实下面操作就是把这个命令封装到Cmake中 #swig.exe -c++ -java -package com.cjh.hello-outdir F:/AllProjects/EarthworkLib/app/src/main/java/com/cjh/hello-o Unix_wrap.cxx Unix.i string(REPLACE "." "/" JAVA_GEN_SUBDIR ${JAVA_GEN_PACKAGE}) set(JAVA_GEN_DIR ${Project_SOURCE_DIR}/src/main/java/${JAVA_GEN_SUBDIR}) set(SOURCE_GEN_DIR ${Project_SOURCE_DIR}/src/main/cpp) #JAVA文件输出目录 -outdir set(CMAKE_SWIG_OUTDIR ${JAVA_GEN_DIR}) #指定一个输出目录名,用于放置生成的源文件。例如输出的UnixJAVA_wrap.cxx文件等的位置 set(SWIG_OUTFILE_DIR ${SOURCE_GEN_DIR}) #指定包名 -package set(CMAKE_SWIG_FLAGS -c++ -package ${JAVA_GEN_PACKAGE} ) #c ++模式 set_property(SOURCE src/main/cpp/Unix.i PROPERTY CPLUSPLUS ON) #开始生成 swig_add_library(swig LANGUAGE java SOURCES src/main/cpp/Unix.i) #这里其实也会生成一个libswig.so的库,只不过我不需要所以没保存 #设置生成的so动态库最后输出的路径 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI}) #创建一个静态或者动态库,并提供其关联的源文件路径,开发者可以定义多个库, #CMake会自动去构建它们。Gradle可以自动将它们打包进APK中。 #第一个参数——LAST_SO_NAME:是库的名称 #第二个参数——SHARED:是库的类别,是动态的还是静态的 #第三个参数——src/main/cpp/UnixJAVA_wrap.cxx:是库的源文件的路径 add_library(${LAST_SO_NAME} SHARED src/main/cpp/UnixJAVA_wrap.cxx ) 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
windows下使用cmake+mingw配置makefile(一)
cmake快速入门-1
CMAKE的使用
一文详解CMakeLists文件编写语法规则详解
用CMake代替makefile进行跨平台交叉编译
CMake 基本教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服