我有一个CMakeLists.txt文件,它做了这个:
get_target_property(myloc mytarget LOCATION)
它以前运行得很好,但是CMake 3.0放弃了使用LOCATION
(请参见https://cmake.org/cmake/help/v3.0/policy/CMP0026.html)。 因此,我尝试使用生成器表达式:
set(myloc $<TARGET_FILE:mytarget>)
看起来这样应该可以工作,但生成器表达式并不是在所有地方都被评估,它们只在设置其他目标的属性时才起作用,并且在“生成”步骤而不是更早的“配置”步骤中解决。问题是,在 install()
规则中,我需要知道目标位置,就像这样(真正的用途不是 strip
,但无关紧要):
install(CODE "execute_process(COMMAND strip ${myloc})")
使用 LOCATION
时,这个很好用,但现在已被弃用,而我无法找到正确的方法来解决这个问题。问题的根源似乎是在进行“配置”步骤时调用了 install()
,而此时目标路径未知。
那么,在调用 install()
之前,我该如何弥补这个差距,并发现目标输出路径,就像以前做的那样?