我使用 CMake 为 Android 构建原生库 .so。我添加了以下内容。
set(CMAKE_SYSTEM_NAME Android)
set(CMAKE_SYSTEM_VERSION 21) # API level
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
set(CMAKE_ANDROID_NDK /path/to/android-ndk)
set(CMAKE_ANDROID_STL_TYPE gnustl_static)
但是,我得到的错误是 #include <android/log.h>
运行 make 时未找到。我猜前面的 set()
命令可能包含 NDK 库和 header ,如 android/log.h
但显然不是这样。在 CMake 中包含 NDK 提供的 header 和库的最佳方法是什么?
最佳答案
最好的办法是使用 Android Studio 来驱动 CMake。这是使用 NDK CMake 工具链的最简单方法,无论您使用哪个 NDK,它都会正确设置路径。
在没有 Android Studio 的情况下使用 NDK CMake 工具链是可能的,但更难。生成项目时,您需要在命令行将 NDK 工具链文件的路径传递给 CMake。
如果您需要使用 CMake android 工具链(如您的示例中所示),那么您似乎需要设置包含路径: include_directories(/path/to/android-ndk/loglib)
关于android - 使用 CMake 构建时包含 Android header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47032997/