我需要使用外部项目中的属性。到目前为止,我成功地这样做了:
ExternalProject_Add(
some_ep_name
...
)
# Get source dir
ExternalProject_Get_Property(some_ep_name SOURCE_DIR)
# Set source dir value into less generically named variable
set(SOME_EP_NAME_SOURCE_DIR "${SOURCE_DIR}")
这样可行,但似乎不必要地冗长,而且让我有点恼火。我希望我可以使用生成器表达式,如下所示:
"$<TARGET_PROPERTY:some_ep_name,SOURCE_DIR>"
但似乎这不起作用。在我放弃之前,我想检查一下我做错了什么或者是否有人知道更好的方法。
答案 0 :(得分:0)
ExternalProject的所有“属性”在配置时都是已知的。因此,他们不需要支持生成器表达式,其主要目的是使用值在配置时不知道(但在构建时已知)。
如果您发现“不必要的详细”,将几行代码用于将外部项目属性保存到变量中,您可以创建一个宏/函数来合并所有这些行。然后调用宏/函数将只使用单行代码:
function(ExternalProject_Property_to_Var VAR eproject prop)
ExternalProject_Get_Property(${eproject} ${eprop})
set(${VAR} ${${eprop}} PARENT_SCOPE)
endfunction()
...
ExternalProject_Property_to_Var(SOME_EP_NAME_SOURCE_DIR some_ep_name SOURCE_DIR)