windows cmake上的Android交叉编译命令行是否使用了错误的编译器?

windows cmake上的Android交叉编译命令行是否使用了错误的编译器?,android,cmake,Android,Cmake,我不知道这为什么给我带来这么多麻烦。我正试图从编译这个。所以linux上的库转移到windows机器上编译它。出于某种原因,每当我运行cmake时。。cmake总是关闭并使用MSVC,而不是我告诉它在我的cmake文件中使用的编译器。也许我已经盯着它看太久了,但我不明白我做错了什么。我甚至尝试在Android sdk中使用cmake,同样的问题。我错过了什么 我的cmake文件: cmake_minimum_required(VERSION 3.10.2) project(TEST) set

我不知道这为什么给我带来这么多麻烦。我正试图从编译这个。所以linux上的库转移到windows机器上编译它。出于某种原因,每当我运行cmake时。。cmake总是关闭并使用MSVC,而不是我告诉它在我的cmake文件中使用的编译器。也许我已经盯着它看太久了,但我不明白我做错了什么。我甚至尝试在Android sdk中使用cmake,同样的问题。我错过了什么

我的cmake文件:

cmake_minimum_required(VERSION 3.10.2)
project(TEST)


set(CMAKE_TOOLCHAIN_FILE "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake")
set(ANDROID_ABI arm64-v8a)

set(TOOLCHAIN "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64")


set(CC ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)

set(CMAKE_C_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)

include_directories(${CMAKE_SOURCE_DIR}/headers )


add_library( # Sets the name of the library.
             native-lib

             # Sets the library as a shared library.
             SHARED

             # Provides a relative path to your source file(s).
             #main.cpp
             Image_Reader.cpp
             CV_Main.cpp
             Native_Camera.cpp
             unityInterface.cpp
        )


#tensorflow lite
add_library(lib_tflite SHARED IMPORTED)
set_target_properties(lib_tflite
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/arm64-v8a/libtensorflowlite.so)

#OpenCV
add_library(lib_opencv SHARED IMPORTED)
set_target_properties(lib_opencv
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/arm64-v8a/libopencv_java4.so)






find_library( log-lib log C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)
find_library( camera-lib camera2ndk C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)
find_library( media-lib mediandk C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)
find_library( android-lib android C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/platforms/android-28/arch-arm/usr/lib NO_DEFUALT_PATH)

target_link_libraries(native-lib ${log-lib} ${camera-lib} ${media-lib} ${android-lib} lib_tflite lib_opencv )
我的输出:

-- Building for: Visual Studio 15 2017
-- Selecting Windows SDK version 10.0.17763.0 to target Windows 6.1.7601.
-- The C compiler identification is MSVC 19.16.27035.0
-- The CXX compiler identification is MSVC 19.16.27035.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/
2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/
2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi
o/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studi
o/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx86/x86/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done

“project”调用建立了用于编译代码的工具链

cmake_minimum_required(VERSION 3.10.2)

# Must establish toolchain code before first project call!
set(CMAKE_TOOLCHAIN_FILE "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake")
set(ANDROID_ABI arm64-v8a)
set(TOOLCHAIN "C:/Users/myusername/AppData/Local/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64")
set(CC ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)
set(CMAKE_C_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN}/bin/aarch64-linux-android28-clang++)

project(TEST)

1.工具链文件(
CMAKE\u toolchain\u file
variable)应在调用
project()之前设置。最好在命令行中指定工具链文件,如中所示。2.如果您不想使用Visual Studio(用于:Visual Studio 15 2017的第
行),则需要通过正确的使用
-G
选项。@Tsyvarev谢谢您的帮助。现在我得到了输出:ninja:fatal:CreateProcess:%1不是有效的Win32应用程序。到目前为止,我还没有找到解决方法。打印
%1
而不是实际路径实际上是ninja的一个问题(如)。但是Ninja告诉你你想要执行一个不能在Windows上执行的文件。Windows上的可执行文件通常具有扩展名
.exe
,但您的编译器(
aarch64-linux-android28-clang
)没有此扩展名。您确定编译器要在Windows上运行吗?您可能想使用MSYS或MinGW。如果是,那么选择合适的CMake生成器。嗯,好的。MinGW Makefiles:[100%]链接CXX共享库libnative-lib时出现类似错误。因此,运行链接命令:%1时出错。make[2]:***[CMakeFiles\native lib.dir\build.make:134:libnative lib.so]错误2 make[1]:***[CMakeFiles\Makefile 2:75:CMakeFiles/native lib.dir/all]错误2 make:**[Makefile:83:all]错误2您是否检查过类似的错误消息?谢谢,这很有帮助。现在我得到了输出:ninja:fatal:CreateProcess:%1不是有效的Win32应用程序。cpp.o到目前为止,我还没有找到解决方法。不用担心。请在另一个帖子中提问,这样我可以更好地帮助你。