c++ - 带有 MSVC Ninja 的 CMake 给出编译器和测试程序错误
问题描述
我有以下 C++ 构建设置(使用 MSVC 2019 + Ninja):
构建.bat
@echo off
mkdir build_folder
cd build_folder
call "C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\PROFESSIONAL\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe" -G "Ninja" -DCMAKE_CXX_COMPILER:FILEPATH="C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" -DCMAKE_C_COMPILER:FILEPATH="C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_MAKE_PROGRAM="C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\PROFESSIONAL\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\Ninja\ninja.exe" ..
cd ..
CMakeLists.txt
cmake_minimum_required (VERSION 3.13)
project(TestScript CXX)
set(CMAKE_CXX_STANDARD 17)
add_executable(${PROJECT_NAME} Script.cpp)
脚本.cpp
int main()
{
return 0;
}
但是在运行时build.bat
我得到这个输出:
-- The CXX compiler identification is MSVC 19.21.27702.2
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe -- broken
CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.14/Modules/CMakeTestCXXCompiler.cmake:53 (message):
The C++ compiler
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.21.27702/bin/HostX64/x64/cl.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Coding/cmake_msvc_test/build_folder/CMakeFiles/CMakeTmp
Run Build Command(s):C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe cmTC_6ecce
[1/2] Building CXX object CMakeFiles\cmTC_6ecce.dir\testCXXCompiler.cxx.obj
[2/2] Linking CXX executable cmTC_6ecce.exe
FAILED: cmTC_6ecce.exe
cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=CMakeFiles\cmTC_6ecce.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1421~1.277\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_6ecce.dir\testCXXCompiler.cxx.obj /out:cmTC_6ecce.exe /implib:cmTC_6ecce.lib /pdb:cmTC_6ecce.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
RC Pass 1: command "rc /foCMakeFiles\cmTC_6ecce.dir/manifest.res CMakeFiles\cmTC_6ecce.dir/manifest.rc" failed (exit code 0) with the following output:
The system cannot find the file specified
ninja: build stopped: subcommand failed.
我假设我的cmake ninja调用build.bat
不太正确(就包含和编译器路径等而言)。我需要如何调整它?
解决方案
推荐阅读
- javascript - Django Rest 框架限制视图
- javascript - 如何在 JS 中动态生成 getter 和 setter?
- r - 在R中的排序向量中获取索引的最有效方法?
- snowflake-schema - 为什么 Snowflake 建议创建一个外部阶段而不是直接从存储桶中加载它?
- android - 如何检查文本字段是否包含颤动的字符串?
- go - gopkg.in/ini.v1 无法处理同一部分中的重复键
- python - 将格式化和突出显示的多行文本 (SQL) 粘贴到 PyCharm 中的字符串文字中
- f# - 如何遍历 Odata 实体模型图?
- linux - 将多个 CSV 文件合并到一个 CSV 文件中,并使用 unix shell 脚本或 unix awk 在最终的 CSV 文件中创建超级模式
- angular - 不能同时使用 HttpHeaders 和 WithCredentials 选项