I am trying to build a ROM image using CMake. I have a project root directory CMakeLists.txt file which calls add_subdirectory() to build the different components for the ROM image. These components are output in binary format. Once this is done I wish to combine the resulting binaries into a single image.
Currently I have a final add_subdirectory() call that is meant to use objdump to convert the binary output of the other modules to an object file and then link these into a unified elf that is then converted with 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()
This does not work as CMake complains that the target (rom_image.bin) has no source files.