我正在尝试使用CMake构建ROM映像。我有一个项目根目录CMakeLists.txt
文件,该文件调用add_subdirectory()
为ROM映像构建不同的组件。这些组件以二进制格式输出。完成此操作后,我希望将生成的二进制文件合并为一个图像。
当前,我有一个最终的add_subdirectory()
调用,该调用旨在使用objdump
将其他模块的二进制输出转换为目标文件,然后将它们链接到一个统一的elf,然后将其转换为objdump
。
add_executable(rom_image.bin)
foreach (COMPONENT ${COMPONENTS})
set(COMPONENT_BINARY_FILENAME "${CMAKE_BINARY_DIR}/${COMPONENT}/output.bin")
set(COMPONENT_OBJECT_FILENAME "${COMPONENT}.o")
add_custom_command(
TARGET rom_image.bin
PRE_BUILD
OUTPUT ${COMPONENT_OBJECT_FILENAME}
DEPENDS ${COMPONENT_BINARY_FILENAME}
COMMAND ${OBJCOPY_PROGRAM}
ARGS --input-target=binary --output-target=elf32-littlearm --binary-architecture=arm ${COMPONENT_BINARY_FILENAME} ${COMPONENT_OBJECT_FILENAME}
)
endforeach()
这不起作用,因为CMake抱怨目标(rom_image.bin)没有源文件。