1. 为什么需要掌握CMakeLists.txt
在RK3576平台上进行安卓JNI/NDK开发时,CMakeLists.txt就是连接Java世界和Native世界的桥梁。这个看似简单的配置文件,实际上决定了:
- 哪些C/C++源文件会被编译
- 如何链接系统库和第三方库
- 最终生成的so库的ABI兼容性
- 跨平台编译时的特殊处理
我遇到过不少开发者,在RK3576上移植算法时,因为CMake配置不当导致:
- 明明代码没问题却链接失败
- 性能优化无法生效
- 多ABI支持出现兼容性问题
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CMakeLists.txt基础结构解析
2.1 最小化配置示例
cmake复制cmake_minimum_required(VERSION 3.4.1) # RK3576推荐的最低CMake版本
add_library( # 必须与System.loadLibrary()中的名称一致
native-lib
SHARED
src/main/cpp/native-lib.cpp )
find_library( # 查找log库
log-lib
log )
target_link_libraries( # 指定链接库
native-lib
${log-lib} )
2.2 关键指令详解
add_library:定义要构建的库- STATIC/SHARED决定生成.a或.so
- 第二个参数必须与Java中System.loadLibrary()一致
find_library:查找NDK提供的预构建库- RK3576常用的有log、jnigraphics、android等
target_link_libraries:指定依赖关系
注意:RK3576的NDK路径通常为
/opt/rk3588_android_sdk/ndk/21.3.6528147,在Android Studio中需要正确配置
