我正在尝试将构建后命令添加到一个小项目中,该项目将自动获取我的构建输出文件(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打印到终端的。
答案 0 :(得分:0)
此字符串是错误的:
COMMAND "${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex"
您应该使用ARGS
关键字:
COMMAND ${CMAKE_OBJCOPY} ARGS -O ihex ${EXECUTABLE_NAME} ${PROJECT_NAME}.hex