You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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命令,具体步骤如下:

  1. 先用get_target_property将目标的属性值存储到一个变量中
  2. 再通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:12:01