gpt4 book ai didi

cmake - 从 cmake 构建中检索目标属性

转载 作者:行者123 更新时间:2023-12-01 10:47:18 31 4
gpt4 key购买 nike

假设我有一个现有项目,它是 cmake 配置的构建目录。如果我知道目标名称,如何使用此构建检索某些目标的属性?我试着像这样创建一个单独的脚本

get_target_property(VAR target property)

但它因错误而失败
Command get_target_property() is not scriptable

还有其他方法吗?

最佳答案

显然只有在使用 cmake 配置构建目录时才能调用 get_target_property()。我不知道在已配置的构建目录上获取目标属性的任何方法。但如果修改现有的 CMakeFiles.txt 是一个选项,则有一个解决方法。

您可以尝试定位目标定义,在那里获取目标的属性并将它们转储到文本文件中。然后,此文件可以在构建目录配置完成后调用的任何其他脚本中使用。

此示例说明了此解决方法:

add_executable(app ${app_sources}) 
set_target_properties(app PROPERTIES COMPILE_DEFINITIONS SOME_DEF=1)

get_target_property(compile_defs app COMPILE_DEFINITIONS)
file(WRITE app_compile_defs.txt ${compile_defs})

请务必使用 get_target_property在 CMakeFiles.txt 中给定目标的每个属性更改完成后。否则,您可能会错过以下示例中的某些内容。
add_executable(app ${app_sources}) 
set_target_properties(app PROPERTIES COMPILE_DEFINITIONS SOME_DEF=1)

get_target_property(compile_defs app COMPILE_DEFINITIONS)
file(WRITE app_compile_defs.txt ${compile_defs})

set_target_properties(app PROPERTIES COMPILE_DEFINITIONS ANOTHER_DEF=0)

在上面的例子中, ANOTHER_DEF=0定义不会在 app_compile_defs.txt 中列出.

关于cmake - 从 cmake 构建中检索目标属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24881408/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com