我目前正在做一个项目,需要使用生成器表达式来获取CMake目标的一些属性。
cmake_minimum_required(VERSION 3.20)
project(fruit_proj)
add_custom_target(banana)
set_target_properties(banana PROPERTIES COLOR "yellow")
add_custom_target(fruit)
set_target_properties(fruit PROPERTIES COLOR $<TARGET_PROPERTY:banana,COLOR>)
file(GENERATE OUTPUT color.txt CONTENT $<TARGET_PROPERTY:fruit,COLOR>)
请注意$<TARGET_PROPERTY>
产生器运算式的链接用法,此运算式会取得fruit
的COLOR
属性值,而其本身也是一个产生器运算式,可取得banana
的COLOR
属性。
我希望生成的color.txt
文件的内容是
yellow
而事实上
$<TARGET_PROPERTY:banana,COLOR>
即仅对第一生成器表达式求值。
是否有任何方法可以递归计算生成器表达式以获得所需的输出,或者在CMake中不可能?
期待您的建议:)
PS:我不能使用get_target_property
,因为目标生成的顺序不能保证。
1条答案
按热度按时间kdfy810k1#
如果生成器表达式的结果本身就是一个生成器表达式,那么对于要计算的get inner expression,用$<GENEX_EVAL>: