C++ 检查是否从CMake生成Visual Studio解决方案或Makefile
如何在CMakeLists.txt中知道生成的是Visual Studio解决方案还是生成文件 我需要将外部项目添加到解决方案中,如下所示:C++ 检查是否从CMake生成Visual Studio解决方案或Makefile,c++,visual-studio,cmake,C++,Visual Studio,Cmake,如何在CMakeLists.txt中知道生成的是Visual Studio解决方案还是生成文件 我需要将外部项目添加到解决方案中,如下所示: INCLUDE_EXTERNAL_MSPROJECT(cs-tests ${CMAKE_CURRENT_SOURCE_DIR}/cstests/cstests.csproj) 但我只想在打电话的时候做 cmake .. -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 12 2013" 不是在我打电话的时候: cma
INCLUDE_EXTERNAL_MSPROJECT(cs-tests ${CMAKE_CURRENT_SOURCE_DIR}/cstests/cstests.csproj)
但我只想在打电话的时候做
cmake .. -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 12 2013"
不是在我打电话的时候:
cmake -G "NMake Makefiles" ..
生成器的名称存储在
CMAKE\u generator
中。它应该包含-G
选项给出的精确字符串
MSVC
变量也应该设置为TRUE
,同样应该设置MSVC12
和MSVC\u IDE
(虽然我目前无法确认这一点。)CMakeMSVC
变量,即使生成器不是visualstudio
(例如Windows上的Ninja
)
要检查CMake生成器是否为Visual Studio,请执行以下操作:
if (CMAKE_GENERATOR MATCHES "Visual Studio")
# Do Visual Studio specific stuff
else()
# Other stuff
endif()
请注意,
MSVC
最初并没有设置-它可能是在调用project
之后设置的。同时,CMAKE_生成器
始终在CMakeLists.txt
中设置为字符串,如“Visual Studio 15 2017 Win64”。这是很有用的,因为在调用project
之前,应该设置CMAKE\u工具链文件
,但可能仅在Windows上;e、 g.对于vcpkg.cmake.MSVC变量并不总是定义的,我建议匹配“if(cmake_生成器匹配“Visual Studio”)”