В настоящее время я тестирую поддержку Visual Studio 2017 RC CMake для проектов Android NDK C ++ в Windows и столкнулся с проблемой.
Когда я пытаюсь сгенерировать кеш CMake с помощью:
<cmake.exe> -G "Visual Studio 15 2017" -DCMAKE_INSTALL_PREFIX:PATH=<install_path> -DCMAKE_TOOLCHAIN_FILE="<androidNDK_path>\build\cmake\android.toolchain.cmake" -DANDROID_TOOLCHAIN=gcc -DANDROID_ABI="armeabi-v7a with NEON" --DCMAKE_BUILD_TYPE="Debug" <source>
Я получаю следующую ошибку (то же самое происходит с Clang, если я не форсирую gcc):
The C compiler "<androidNDK_path>/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc.exe" is not able to compile a simple test program.
Перед этим я получаю предупреждения о том, что идентификация компиляторов C и CXX неизвестна, но я не уверен, что это актуально.
Я получаю больше ошибок для временного тестового проекта, но они не дают много информации, например
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(57,5):
error MSB4018: The "VCMessage" task failed unexpectedly.
а также
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(57,5):
error MSB4018: System.FormatException: Index (zero based) must be greater
than or equal to zero and less than the size of the argument list.
Как я могу устранить это?
Для всех, кто находит этот пост и имеет ту же проблему: проблема, кажется, генератор Visual Studio. Также кажется, что для цепочек инструментов Android требуется аргумент с путем «сделать». Поэтому для решения обоих я установил MSYS (http://www.mingw.org/wiki/MSYS) и изменил команду CMake на:
<cmake.exe> -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX:PATH=<install_path> -DCMAKE_TOOLCHAIN_FILE="<androidNDK_path>\build\cmake\android.toolchain.cmake" -DCMAKE_MAKE_PROGRAM="<MinGW_path>\msys\1.0\bin\make.exe" -DANDROID_TOOLCHAIN=gcc -DANDROID_ABI="armeabi-v7a with NEON" --DCMAKE_BUILD_TYPE="Debug" <source>
Других решений пока нет …