在CMake工程中使用NDK独立工具链 (二)

从android-ndk-r19开始,NDK提供了脚本android.toolchain.cmake,设置CMake所需工具链位置。

1. 下载 NDK

从Android官网NDK归档找到需要的NDK版本,并下载解压:

$ wget https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
$ unzip android-ndk-r19c-linux-x86_64.zip

2. CMake设置

android.toolchain.cmake在build/cmake目录下,首先用include()调用这个脚本设置工具链位置。

这里使用c++_shared作为C++库,需要调用add_compile_options()指定C++库的头文件位置。

clang使用--target选项指定目标architecture。这里通过CMAKE_C_FLAGS指定它的值为armv7a-linux-androideabi28。

如果有一些所有模块都使用的库,如liblog.so, ligz.so,可以使用add_link_options()链接它们。

set (ANDROID_ABI arm64-v8a)
set (ANDROID_PLATFORM android-28)
set (ANDROID_TOOLCHAIN clang)
set (ANDROID_STL c++_shared)

include (${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake)

set (CMAKE_C_FLAGS --target=armv7a-linux-androideabi28)

add_compile_options (-I${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1)
add_link_options (-llog -lz)

相关链接

CMake 常用法
用CMake构建中等规模的工程
在CMake工程中使用NDK独立工具链 (一)
在CMake工程中使用NDK独立工具链 (二)

参考资料

Using the NDK with other build systems
https://developer.android.google.cn/ndk/guides/other_build_systems?hl=zh-cn

你可能感兴趣的:(在CMake工程中使用NDK独立工具链 (二))