Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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 qt输入库后缀_C++_Qt_Cmake - Fatal编程技术网

C++ 用于自定义调试生成的CMake qt输入库后缀

C++ 用于自定义调试生成的CMake qt输入库后缀,c++,qt,cmake,C++,Qt,Cmake,我一直在为多重配置IDE(VisualStudio)编写cmake文件。 我的目标是添加一个自定义配置,并告诉VisualStudio我希望使用Qt的调试库(qtcored.lib),就像我选择调试配置时一样。使用下面的代码,当我选择CustomDebug配置时,我在链接器输入中有发布库 有人知道如何做到这一点吗 谢谢 cmake_minimum_required(VERSION 3.12.0) project(custom-conf) find_package(Qt5Core

我一直在为多重配置IDE(VisualStudio)编写cmake文件。 我的目标是添加一个自定义配置,并告诉VisualStudio我希望使用Qt的调试库(qtcored.lib),就像我选择调试配置时一样。使用下面的代码,当我选择CustomDebug配置时,我在链接器输入中有发布库

有人知道如何做到这一点吗

谢谢

cmake_minimum_required(VERSION 3.12.0)

project(custom-conf)

find_package(Qt5Core        CONFIG REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

set(SRC main.cpp)

set(QT_LIBS Qt5::Core)

add_executable(custom-conf WIN32 ${SRC})

target_link_libraries(custom-conf ${QT_LIBS})

#
get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)

if(isMultiConfig)
    set(CMAKE_CONFIGURATION_TYPES "CustomDebug;Debug;Release" CACHE STRING "" FORCE)
    set(CMAKE_EXE_LINKER_FLAGS_CUSTOMDEBUG "/debug")
endif()
我想使用Qt的调试库(qtcored.lib),就像我选择调试配置时一样

对于导入的目标,可以使用目标属性轻松实现这一点:

# For CustomDebug configuration of the main project
# use Debug configuration of the IMPORTED target
set_target_properties(Qt5::Core PROPERTIES
    MAP_IMPORTED_CONFIG_CUSTOMDEBUG DEBUG)
通过设置变量,您可以自动为所有导入的目标设置属性:

set(CMAKE_MAP_IMPORTED_CONFIG_CUSTOMDEBUG DEBUG)
#...
# This call will create IMPORTED target Qt5::Core which
# MAP_IMPORTED_CONFIG_CUSTOMDEBUG property is already set.
find_package(Qt5Core CONFIG REQUIRED)

(变量赋值应该在创建导入目标的任何调用(如
find\u package
)之前

在qt cmake文件中挖掘时,我发现它只使用内部的_populate\u Core\u target\u属性(DEBUG“qt5corder.dll”“qt5corder.lib”),并且我必须映射这些属性。谢谢你的回答