You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将add_custom_command生成的.ROB文件转为CMake可执行目标?

解决方案

步骤1:定义生成.ROB文件的自定义命令

先用add_custom_command描述生成myFile.ROB的过程,明确输入的.cmd文件、特殊链接器命令及输出文件:

# 替换为你的特殊链接器路径/名称
set(SPECIAL_LINKER "your_special_linker.exe")

add_custom_command(
    OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/myFile.ROB"
    COMMAND ${SPECIAL_LINKER} "${CMAKE_CURRENT_SOURCE_DIR}/input.cmd" -o "${CMAKE_CURRENT_BINARY_DIR}/myFile.ROB"
    MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/input.cmd"
    COMMENT "Generating myFile.ROB via special linker"
)

步骤2:创建驱动生成的自定义目标

用add_custom_target关联生成的输出文件,确保CMake在构建流程中自动执行生成命令:

add_custom_target(generate_rob_file ALL
    DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/myFile.ROB"
)

步骤3:创建可引用的IMPORTED可执行目标

创建IMPORTED目标并配置路径与依赖,完成后即可用$<TARGET_FILE:>语法引用:

add_executable(my_rob_target IMPORTED)

set_target_properties(my_rob_target PROPERTIES
    # 指定生成的.ROB文件绝对路径
    IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/myFile.ROB"
)

# 确保生成任务完成后再处理该IMPORTED目标
add_dependencies(my_rob_target generate_rob_file)

关键说明

  • 必须用绝对路径:CMake对IMPORTED目标的路径解析要求严格,借助CMAKE_CURRENT_BINARY_DIR(二进制输出目录)和CMAKE_CURRENT_SOURCE_DIR(源码目录)避免路径错误。
  • 绑定依赖关系:通过add_dependencies让IMPORTED目标依赖生成任务,保证构建顺序正确——先生成.ROB文件,再允许其他逻辑引用它。
  • ALL关键字:让generate_rob_file目标默认随构建执行,无需手动触发。

之后你就可以在其他CMake逻辑中用$<TARGET_FILE:my_rob_target>引用生成的myFile.ROB文件了。

内容的提问来源于stack exchange,提问作者mtribiere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:45:15