使用vcpkg与Ninja构建C++应用失败的问题排查
解决Ninja生成器搭配CMake时“不支持平台规格”的报错
问题原因
-A <platform>是CMake为Visual Studio、Xcode这类支持多平台的生成器设计的参数,用于指定目标架构。但Ninja属于无平台生成器,它依赖当前配置的编译器工具链决定生成架构,不识别-A参数,因此会触发“Generator Ninja不支持平台规格”的报错。
解决方案
1. 调整CMake命令,移除-Ax64参数
由于你使用的是MinGW 64位编译器,默认会生成x64架构的二进制文件,无需通过-A参数指定。修改后的CMake命令如下:
cmake -G "Ninja" -S . -B build -DCMAKE_TOOLCHAIN_FILE="F:/projects/vcpkg/scripts/buildsystems/vcpkg.cmake"
2. 匹配vcpkg包与工具链架构
vcpkg需要根据目标架构安装对应版本的依赖,需添加参数指定适配MinGW 64位的triplet:
- 静态链接场景:添加
-DVCPKG_TARGET_TRIPLET=x64-mingw-static - 动态链接场景:添加
-DVCPKG_TARGET_TRIPLET=x64-mingw-dynamic
示例命令(静态链接):
cmake -G "Ninja" -S . -B build -DCMAKE_TOOLCHAIN_FILE="F:/projects/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-mingw-static
3. 验证编译器路径正确性
你的CMakeLists.txt已指定MinGW编译器路径,需确保路径指向的是64位MinGW(通常64位MinGW路径为C:/mingw64/bin/gcc.exe,若当前路径是32位MinGW,需替换为64位版本路径)。
构建测试
执行修改后的CMake命令生成构建文件,再运行以下命令完成构建:
cmake --build build
内容的提问来源于stack exchange,提问作者Hamid
相关产品推荐
相关产品推荐

