c++ - 给定目标名称列表,如何获取目标文件名列表?
问题描述
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 ()
推荐阅读
- regex - 在灰色日志中搜索带有破折号和数字的字符串?
- c# - 为什么我的代码会在 SQL Server 中引发语法错误?
- javascript - 修复移动双击链接问题
- swift - 为什么我需要强制将属性强制转换为与该属性具有相同签名的通用方法?
- javascript - window.onbeforeunload:除非我设置断点,否则未分配
- virtualenv - 无法在 Mac OS Mojave 上创建 Python 虚拟环境
- php - 返回显示在所有三个子数组中的数字数组
- python-3.x - 如何在 Python Selenium 中抓取动态网站?
- java - 在 Java 中使用 Scanner 的 NoSuchElementException
- angular - 角度读取数据