Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CMake构建时包含Android头文件_Android_C++_Cmake_Android Ndk_Java Native Interface - Fatal编程技术网

使用CMake构建时包含Android头文件

使用CMake构建时包含Android头文件,android,c++,cmake,android-ndk,java-native-interface,Android,C++,Cmake,Android Ndk,Java Native Interface,我使用CMake构建了一个本机库。Android也是如此。我补充了以下内容 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) 但是,我得到一个错误,即运行m

我使用CMake构建了一个本机库。Android也是如此。我补充了以下内容

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
。我猜想前面的
set()
命令可能包含NDK libs和类似
android/log.h
的头文件,但显然不是这样。在CMake中包含NDK提供的标题和LIB的最佳方式是什么?

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

如果没有Android Studio,使用NDK CMake工具链是可能的,但难度更大。生成项目时,需要在命令行上将NDK工具链文件的路径传递给CMake

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

你真的为
CMAKE_android_ndk
放了
/path/to/android ndk
,还是你把正确的路径放在了ndk在你机器上的位置?我系统中的实际路径已经放好了。我知道android studio做得很好,我希望复制它。它必须使用一些系统化的方法来完成我试图做的事情。如果你没有使用Studio,你应该使用NDK中包含的CMake工具链文件
cmake-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.TOOLCHAIN.cmake
。查看该文件顶部的其他选项列表。