У меня есть несколько целей, которые делаются в проекте CMake.У каждой цели есть свой скрипт (файл LD).Как мне написать файл CMakeLists.txt, чтобы это произошло?Это для встроенного проекта с файлами C / C ++ / ASM.
Это то, что у меня есть до сих пор.Проблема в том, что LINKER_SCRIPT определяется глобально, а не для каждой цели.
# add alpha target
add_executable(alpha.elf ${SOURCES})
target_compile_definitions(alpha.elf PUBLIC -DALPHA_DEFINED)
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/Linker/alpha.ld)
# add beta target
add_executable(beta.elf ${SOURCES})
target_compile_definitions(beta.elf PUBLIC -DBETA_DEFINED)
set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/Linker/beta.ld)
set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -T ${LINKER_SCRIPT}")
Проблема в том, что LINKER_SCRIPT перезаписывается и используется последнее определение.Как я могу заставить эту работу работать?
Я попытался определить переменную для каждого целевого объекта, используя следующее, однако вывод не такой, как ожидалось.Файл компилируется, но все не так, как должно быть.Например, сгенерированный файл HEX не начинается с 0x08000000, где он должен быть определен для файла LD.
set_target_properties(alpha.elf PROPERTIES
CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Map=${PROJECT_BINARY_DIR}/alpha.elf.map -T ${CMAKE_SOURCE_DIR}/Linker/alpha.ld")