Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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
Cmake 在使用配置包时,如何强制配置类型?_Cmake_Configuration_Package - Fatal编程技术网

Cmake 在使用配置包时,如何强制配置类型?

Cmake 在使用配置包时,如何强制配置类型?,cmake,configuration,package,Cmake,Configuration,Package,在具有自定义配置类型的cmake生成中,例如RelWithAsserts if(CMAKE_CONFIGURATION_TYPES) set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithAsserts) set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "Reset the configu

在具有自定义配置类型的cmake生成中,例如
RelWithAsserts

if(CMAKE_CONFIGURATION_TYPES)
    set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithAsserts)
    set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING
        "Reset the configurations to what we need"
        FORCE)
endif()
如何通过
find_package
更改您使用的软件包的配置,并强制将其释放

# GTest doesn't have RelWithAsserts config type, so this wont work.
find_package(GTest CONFIG REQUIRED) 

# Somehow force this to use Release config.
target_link_libraries(test PRIVATE GTest::GTest)

ty

通过设置变量可以轻松调整导入目标的配置:

# When the project is built in RelWithAsserts configuration
# use Release version of IMPORTED targets
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHASSERTS Release)
# Now `find_package` could be used.
# It will create IMPORTED targets with needed properties
find_package(GTest CONFIG REQUIRED)

target_link_libraries(test PRIVATE GTest::GTest)
您甚至可以使用该设置:

# When the project is built in RelWithAsserts configuration
# use Release version of an IMPORTED target if it exists.
# If some target misses Release version, then fallback to Debug.
set(CMAKE_MAP_IMPORTED_CONFIG_RELWITHASSERTS Release Debug)