使用cmake编译cjson ndk
时间: 2023-07-11 09:19:37 浏览: 179
好的,这是一个关于使用CMake编译cjson和NDK的问题。以下是详细步骤:
1. 下载cjson源代码并解压缩。
2. 在项目根目录下创建一个CMakeList.txt文件,内容如下:
```
cmake_minimum_required(VERSION 3.4.1)
# 添加cjson源代码目录为库文件
add_subdirectory(cjson)
# 设置库文件名称
set(LIB_NAME cjson)
# 添加jni目录下的源文件
file(GLOB_RECURSE JNI_SRC src/main/cpp/*.cpp)
# 添加头文件目录
include_directories(${CMAKE_SOURCE_DIR}/cjson)
# 生成动态库
add_library(${LIB_NAME} SHARED ${JNI_SRC})
# 链接cjson库文件
target_link_libraries(${LIB_NAME} cjson)
```
3. 在cjson目录下创建一个CMakeLists.txt文件,内容如下:
```
# 设置cjson源代码目录
set(CJSON_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
# 添加cjson源文件
file(GLOB CJSON_SRC ${CJSON_SRC_DIR}/*.c)
# 生成静态库
add_library(cjson STATIC ${CJSON_SRC})
```
4. 配置NDK环境变量,并执行以下命令:
```
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK_HOME/build/cmake/android.toolchain.cmake -DANDROID_ABI=armeabi-v7a -DANDROID_NATIVE_API_LEVEL=21 ..
make
```
以上命令中,-DCMAKE_TOOLCHAIN_FILE 指定了NDK的工具链路径,-DANDROID_ABI 指定了编译的ABI,-DANDROID_NATIVE_API_LEVEL 指定了目标SDK版本。
5. 编译完成后,会在build目录下生成一个lib目录,其中包含编译生成的动态库和静态库。
希望这能帮到你。
阅读全文