检查是否从CMake生成Visual Studio解决方案或Makefile

Check if generating a Visual Studio solution or Makefile from CMake

本文关键字:Studio 解决方案 Makefile Visual 生成 是否 CMake 检查      更新时间:2023-10-16

我如何在CMakeLists.txt中知道我正在生成Visual Studio解决方案还是Makefile?

我需要将外部项目添加到这样的解决方案中:

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 MSVC变量可以设置,即使生成器不是Visual Studio(例如Windows上的Ninja)。

为了检查CMake生成器是否是Visual Studio(即msbuild),以下操作完成了任务:

if (CMAKE_GENERATOR MATCHES "Visual Studio")
    # Do Visual Studio specific stuff
else()
    # Other stuff
endif()

生成器的名称存储在CMAKE_GENERATOR中。它应该包含-G选项给出的确切字符串。

MSVC变量也应该设置为TRUEMSVC12MSVC_IDE也是如此(尽管我目前无法从文档中确认这一点)