如何通过CMake为Visual Studio的Debug和Release配置分别添加项目属性表?
问题描述
我有两个.props文件,分别对应Debug和Release配置。尝试了以下两种使用生成器表达式的方法,但均未生效——Visual Studio的属性管理器窗口中未显示添加的文件:
set_property(TARGET MyTarget PROPERTY VS_USER_PROPS $<$<CONFIG:Debug>:${PROJECT_SOURCE_DIR}/../Include/prop_sheet_Debug.props> $<$<CONFIG:Release>:${PROJECT_SOURCE_DIR}/../Include/prop_sheet_Release.props> ) set_property(TARGET MyTarget PROPERTY VS_USER_PROPS "${PROJECT_SOURCE_DIR}/../Include/prop_sheet_$<CONFIG>.props")
直接指定Debug属性表的方法虽能生效,但会将prop_sheet_Debug.props文件同时添加到目标的Debug和Release配置中(在属性管理器窗口可见),不符合需求:
set_property(TARGET MyTarget PROPERTY VS_USER_PROPS "${PROJECT_SOURCE_DIR}/../Include/prop_sheet_Debug.props")
请问是否可通过CMake分别为Debug和Release配置添加对应的属性表?
解决方案
可以通过在set_property命令中指定CONFIGURATIONS参数,为不同配置单独设置VS_USER_PROPS属性,实现分别绑定对应配置的.props文件:
# 为Debug配置绑定对应的属性表 set_property(TARGET MyTarget PROPERTY VS_USER_PROPS "${PROJECT_SOURCE_DIR}/../Include/prop_sheet_Debug.props" CONFIGURATIONS Debug) # 为Release配置绑定对应的属性表 set_property(TARGET MyTarget PROPERTY VS_USER_PROPS "${PROJECT_SOURCE_DIR}/../Include/prop_sheet_Release.props" CONFIGURATIONS Release)
CONFIGURATIONS参数会限定该属性仅应用于指定的构建配置,这样Visual Studio属性管理器中,Debug配置只会加载Debug对应的.props,Release配置只会加载Release对应的.props,不会出现交叉应用的问题。
内容的提问来源于stack exchange,提问作者Marsupito
相关产品推荐
相关产品推荐

