使用 git bash 在命令行上设置 cmake 的 msvc 编译器标志



有人能帮助解决以下问题吗。我使用的是Cmake+git-bash,并且在带有msvc编译器的windows机器上。如果我以以下方式配置项目cmake ..,一切都很好,我可以看到以下输出:

-- Building for: Visual Studio 16 2019
-- The C compiler identification is MSVC 19.24.28319.0
-- The CXX compiler identification is MSVC 19.24.28319.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/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/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe - works

然而,当我尝试设置编译器标志cmake -DCMAKE_CXX_FLAGS="/MD" ..时,我会得到以下错误:

-- Building for: Visual Studio 16 2019
-- The C compiler identification is MSVC 19.24.28319.0
-- The CXX compiler identification is MSVC 19.24.28319.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/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/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe - broken
CMake Error at C:/Program Files/CMake/share/cmake-3.17/Modules/CMakeTestCXXCompiler.cmake:53 (message):
The C++ compiler
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/dev/projects/camshare/microservices/templates/microservice_cpp/build/CMakeFiles/CMakeTmp
Run Build Command(s):C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin/MSBuild.exe cmTC_ce8fa.vcxproj /p:Configuration=Debug /p:Platform=x64 /p:VisualStudioVersion=16.0 /v:m && Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Microsoft (R) C/C++ Optimizing Compiler Version 19.24.28319 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.
Program
cl /c /Zi /W1 /WX- /diagnostics:column /Od /Ob0 /D "CMAKE_INTDIR="Debug"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_ce8fa.dirDebug\" /Fd"cmTC_ce8fa.dirDebugvc142.pdb" /Gd /TP /errorReport:queue  C:/Program Files/Git/MD C:devprojectscamsharemicroservicestemplatesmicroservice_cppbuildCMakeFilesCMakeTmptestCXXCompiler.cxx
c1xx : fatal error C1083: Cannot open source file: 'C:/Program': No such file or directory [C:devprojectscamsharemicroservicestemplatesmicroservice_cppbuildCMakeFilesCMakeTmpcmTC_ce8fa.vcxproj]
MD
c1xx : fatal error C1083: Cannot open source file: 'Files/Git/MD': No such file or directory [C:devprojectscamsharemicroservicestemplatesmicroservice_cppbuildCMakeFilesCMakeTmpcmTC_ce8fa.vcxproj]
testCXXCompiler.cxx
Generating Code...
CMake will not be able to correctly generate this project.

如果我试着用windows cmd做同样的事情,一切都会很好。你能解释一下问题出在哪里,我该怎么解决吗?看起来编译器标志的附加不正确(命令行中出现奇怪的Files/Git/MD(。我还尝试过"CXXFLAGS="/MD";cmake"并得到了相同的结果。

问题是在gitbash中对正斜杠进行篡改,可以很容易地找到解决方案。结束提问。

最新更新