CMake中重复调用set_target_properties是否会覆盖目标属性值?
CMake目标属性相关问题解答
第二次调用set_target_properties是否会修改OUTPUT_NAME属性?
会的。set_target_properties命令的作用就是为目标设置属性,当你多次对同一个目标的同一个属性赋值时,后一次的设置会直接覆盖前一次的结果。所以你第二次调用该命令后,SM_Application的OUTPUT_NAME属性会被更新为"New_Name.lib"。
如何正确访问并打印OUTPUT_NAME目标属性?
你直接使用${SM_Application}只能获取目标的名称,无法直接访问它的属性值。要获取目标的属性,需要借助get_target_property命令,具体步骤如下:
- 先用
get_target_property将目标的属性值存储到一个变量中 - 再通过
message命令打印这个变量
示例代码:
# 获取SM_Application的OUTPUT_NAME属性值,存入APP_OUTPUT_NAME变量 get_target_property(APP_OUTPUT_NAME SM_Application OUTPUT_NAME) # 打印属性值 message("Initialize output names for libs: ${APP_OUTPUT_NAME}")
如果担心目标不存在或者属性未被设置,可以添加判断逻辑处理异常情况:
get_target_property(APP_OUTPUT_NAME SM_Application OUTPUT_NAME) if(APP_OUTPUT_NAME STREQUAL "NOTFOUND") message("OUTPUT_NAME property not set for SM_Application") else() message("Initialize output names for libs: ${APP_OUTPUT_NAME}") endif()
内容的提问来源于stack exchange,提问作者Koooala
相关产品推荐
相关产品推荐

