如何使用add_subdirectory()包括在其他地方构建的输出

时间:2019-08-30 09:24:30

标签: cmake

我正在尝试使用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)没有源文件。

0 个答案:

没有答案