android - 使用 CMake 构建时包含 Android header

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

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

相关文章:

java - 如何在 java 应用程序和 adobe air 应用程序之间传递消息?

android - Visual Studio Team Services 中的签名和对齐 APK 步骤(原为 Visual Studio Online)

c++ - 将数据从 vector 推回到 map 的 vector

ubuntu - Clang 7 在 Ubuntu 18.04 上找不到 <filesystem> header

java - Android:无法实例化应用程序错误

通过 shared_ptr 访问写方法时 async_write 上的 C++ Boost.Asio 段错误

c# - 用于开发 OpenGL 3D 应用程序(不是游戏)的 C++ 与 C#

opencv - 如何使raspicam cmake与OpenCV安装一起使用

c++ - 使用 CMake 抑制链接警告

android - 为什么toast消息在android 4.1操作系统包含移动不显示