CMake无法使用Android NDK

CMake fails with Android NDK

本文关键字:Android NDK CMake      更新时间:2023-10-16

我正在尝试使用Android NDK独立工具链构建一些东西。但是,我遇到了这些错误。

        CMake Warning at cmake/android.toolchain.cmake:387 (message):
      Using value of obsolete variable ANDROID_NDK_TOOLCHAIN_ROOT as initial
      value for ANDROID_STANDALONE_TOOLCHAIN.  Please note, that
      ANDROID_NDK_TOOLCHAIN_ROOT can be completely removed in future versions of
      the toolchain.
    Call Stack (most recent call first):
      cmake/android.toolchain.cmake:476 (__INIT_VARIABLE)
      /usr/local/Cellar/cmake/2.8.10.2/share/cmake/Modules/CMakeDetermineSystem.cmake:86 (include)
      CMakeLists.txt:16 (PROJECT)

    CMake Error at cmake/android.toolchain.cmake:412 (FILE):
      file STRINGS file
      "/Users/vgokhale/Desktop/android-ndk-r8e/sysroot/usr/include/android/api-level.h"
      cannot be read.
    Call Stack (most recent call first):
      cmake/android.toolchain.cmake:548 (__DETECT_NATIVE_API_LEVEL)
      /usr/local/Cellar/cmake/2.8.10.2/share/cmake/Modules/CMakeDetermineSystem.cmake:86 (include)
      CMakeLists.txt:16 (PROJECT)
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_C_COMPILER
CMake Error: Could not find cmake module file:/Users/vgokhale/Desktop/torch-android/src/build/CMakeFiles/2.8.10.2/CMakeCCompiler.cmake
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER_ENV_VAR
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_CXX_COMPILER
CMake Error: Could not find cmake module file:/Users/vgokhale/Desktop/torch-android/src/build/CMakeFiles/2.8.10.2/CMakeCXXCompiler.cmake
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
make: *** No rule to make target `install'.  Stop.

有两组错误。我不知道从哪开始第一组。 android.toolchain。默认情况下,cmake文件查找sysroot,但Android没有安装在那里,谷歌也不要求我在那里安装。

关于CMAKE*变量,我发现大多数解决方案涉及安装开发人员工具,我已经有了。我尝试手动设置CXXCC变量,但没有帮助。

我应该从哪里开始?

好的,我会在这里做一点猜测,但我认为你正在使用http://code.google.com/p/android-cmake/,你正在使用ANDROID_STANDALONE_TOOLCHAIN调用它,同时提供它到你的NDK的路径。如果我是对的,这就是问题所在。

你应该用ANDROID_NDK调用它,并提供你的NDK的路径。android-cmake文档建议这样做。

继续用ANDROID_STANDALONE_TOOLCHAIN调用它,但是提供给它安装的工具链的路径(用make-standalone-toolchain.sh创建的东西)

如果你想这样做,你可以在你安装的NDK的docs/standalone - toolchain .html中找到创建独立工具链的信息。