Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检查是否从CMake生成Visual Studio解决方案或Makefile_C++_Visual Studio_Cmake - Fatal编程技术网

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

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

如何在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"
不是在我打电话的时候:

cmake -G "NMake Makefiles" ..

生成器的名称存储在
CMAKE\u generator
中。它应该包含
-G
选项给出的精确字符串


MSVC
变量也应该设置为
TRUE
,同样应该设置
MSVC12
MSVC\u IDE
(虽然我目前无法确认这一点。)

CMake
MSVC
变量,即使生成器不是
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”)”