我正在使用 MSVC 命令行工具尝试在 x64 机器上为 arm/arm64 编译一个简单的基于 c++ 的程序。即使在使用工具链文件之后,编译器定义也没有得到更新,并且正在使用主机的默认编译器。请进一步阅读以获取有关该问题的更多信息。
测试用例:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
}
CMakelists.txt:
cmake_minimum_required(VERSION 3.14.3)
project(hello C CXX ASM)
enable_language(ASM)
add_executable(hello hello.cpp)
工具链文件:
cmake_minimum_required(版本 3.14.3)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR ARM)
set(CMAKE_SYSTEM_VERSION 10.0)
set(CMAKE_C_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/arm/cl.exe")
set(CMAKE_CXX_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/arm/cl.exe")
set(CMAKE_ASM_COMPILER "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/arm/cl.exe")
我用来构建这个的命令:
cmake.exe -S C:\hello -B C:\hello\output_dir.cmake -DCMAKE_TOOLCHAIN_FILE=C:\hello\Toolchain.cmake
通过上述配置,我能够构建基于 x64 的应用程序,但不能构建基于交叉编译的 ARM 的应用程序。从控制台日志中,我看到 c 和 c++ 编译器定义没有被覆盖,但 ASM 编译器被使用工具链文件覆盖。
-- Building for: Visual Studio 16 2019
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.
-- The C compiler identification is MSVC 19.28.29336.0
-- The CXX compiler identification is MSVC 19.28.29336.0
-- The ASM compiler identification is MSVC
-- Found assembler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/arm/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/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 Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/cl.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/hello/output_dir.cmake
我不确定此配置中缺少什么。任何人都可以从他们的经验中得到帮助吗?