c++ - 用于自定义调试构建的 CMake qt 输入库后缀
问题描述
我坚持为多配置 IDE(Visual Studio)编写一个 cmake 文件。我的目标是添加一个自定义配置并告诉 Visual Studio 我想使用 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) 的调试库,因为它是在我选择调试配置时完成的。
使用 IMPORTED目标可以通过使用MAP_IMPORTED_CONFIG<CONFIG> 目标属性轻松实现:
# 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)
通过设置CMAKE_MAP_IMPORTED_CONFIG<CONFIG> 变量,您可以自动为所有 IMPORTED 目标设置属性:
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_package
创建 IMPORTED 目标的调用之前。)
推荐阅读
- google-analytics - 如何使用谷歌分析大查询表计算谷歌广告点击次数
- matlab - 剪切特定段中的音频信号。(Matlab)
- windows - 你如何逃脱管道'|' 从 git bash 使用 azure-cli 时
- javascript - React 全局错误处理程序不适用于异步 componentDidMount。尝试了 componentDidCatch 和 window.onerror
- google-chrome - 在 Chrome 中所有打开的选项卡上运行命令
- javascript - 如何在 Nuxt.js/Vue.js 应用程序中设置 X-Frame-Options
- vue.js - 未捕获的类型错误:无法设置未定义的属性“axios”
- sql - 如何根据每个组的条件过滤记录
- python - 数学平均计算
- c# - 使用 C# 检查特定网络适配器的网络连接