在CMAKE自定义命令中运行objcopy会在make期间导致错误

时间:2018-07-01 15:46:33

标签: cmake avr

我正在尝试将构建后命令添加到一个小项目中,该项目将自动获取我的构建输出文件(ELF)并将其转换为Intel HEX格式以在微控制器上刷新。

但是,当我添加此命令时,构建失败。它将重复此命令,并替换所有由外壳程序运行的CMake变量字符串,并用: not found后缀它。

当我在ELF正常成功构建后在终端中运行该行时,它会按预期工作。 CMake如何处理此问题时我是否迷失了某个地方?

我已将目标添加到我的CMakeLists.txt中,如下所示:

add_custom_command(
    TARGET ${EXECUTABLE_NAME}
    POST_BUILD
    COMMAND "${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex"
)

该命令最终解析为<absolute-path>/avr-objcopy -O ihex test_blink.elf test_blink.hex,我可以验证该命令,因为它是由CMake打印到终端的。

1 个答案:

答案 0 :(得分:0)

此字符串是错误的:

COMMAND "${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex"

您应该使用ARGS关键字:

COMMAND ${CMAKE_OBJCOPY} ARGS -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex