【问题标题】:Including Android headers when using CMake to build使用 CMake 构建时包含 Android 标头
【发布时间】:2017-10-31 10:24:14
【问题描述】:

我使用 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)

但是,运行 make 时,我得到了 #include <android/log.h> 未找到的错误。我猜想前面的set() 命令可能包含了像android/log.h 这样的NDK 库和头文件,但显然不是这样。在 CMake 中包含 NDK 提供的头文件和库的最佳方法是什么?

【问题讨论】:

  • 你是把/path/to/android-ndk 换成CMAKE_ANDROID_NDK,还是把正确的路径放到机器上NDK 的位置?
  • 放了我系统中的实际路径。

标签: android c++ cmake android-ndk java-native-interface


【解决方案1】:

最好的办法是使用 Android Studio 来驱动 CMake。这是使用 NDK CMake 工具链的最简单方法,无论您使用哪种 NDK,它都能正确设置路径。

在没有 Android Studio 的情况下使用 NDK CMake 工具链是可能的,但更难。生成项目时,您需要在命令行中将 NDK 工具链文件的路径传递给 CMake。

如果您需要使用 CMake android 工具链(如您的示例所示),那么您似乎需要设置包含路径: include_directories(/path/to/android-ndk/loglib)

【讨论】:

  • 我知道 Android Studio 的 CMake 做得很好,我希望复制它。它必须使用某种系统的方式来做我想做的事情。
  • 如果您不使用 Studio,则应使用 NDK 中包含的 CMake 工具链文件。 cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake。查看该文件顶部的其他选项列表。
猜你喜欢
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
相关资源
最近更新 更多