在cmake
中,可以使用生成器表达式获取可执行文件的路径。 例如,如果target_x
是目标的名称,则可以执行以下操作:
$<TARGET_FILE:target_x>
但是,我有一长串可执行文件
set(EXAMPLE_EXECUTABLES_TARGETS
"target_a"
"target_b"
"target_c"
"target_d"
"target_e"
)
我该如何为这个列表做同样的事情呢? 我当前的策略是遍历列表并尝试查找包含二进制文件名的属性:
set(EXAMPLE_EXECUTABLES)
foreach (target ${EXAMPLE_EXECUTABLES_TARGETS})
get_target_property(target_file ${target} RUNTIME_OUTPUT_NAME)
message(STATUS "target ${target} value ${target_file}")
endforeach ()
但是cmake
使用该命令将以下内容输出到控制台:
-- target FromFileC value target_file-NOTFOUND
-- target FromFileCpp value target_file-NOTFOUND
-- target AddFromStringC value target_file-NOTFOUND
-- target AddFromStringCpp value target_file-NOTFOUND
-- target AddFromFileC value target_file-NOTFOUND
-- target AddFromFileCpp value target_file-NOTFOUND
-- target AddFromUriC value target_file-NOTFOUND
-- target AddFromUriCpp value target_file-NOTFOUND
我听从了评论中的建议:
set(EXAMPLE_EXECUTABLES_TARGETS
"target_a"
"target_b"
"target_c"
"target_d"
"target_e"
)
foreach (target ${EXAMPLE_EXECUTABLES_TARGETS})
message(STATUS "$<TARGET_FILE:${target}")
endforeach ()