I have a CMake script where the final executable is linked with my own linker script:
cmake_minimum_required(VERSION 3.1)
project(test_app)
set(LINKER_SCRIPT "linker.ld")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T ${LINKER_SCRIPT}")
add_executable(${PROJECT_NAME}.elf
main.cpp
startup.cpp
)
How do I make an executable dependent also on the linker script file (trigger linking if linker.ld
was changed)?
You can add a LINK_DEPENDS property to your executable target, using set_target_properties. Add the following line after your
add_executable
command:The first argument to
set_target_properties
is the target name, i.e. the first argument you passed toadd_executable
.I found this mail which described three possible ways for forcing an executable to be dependent on a linker script. Its author prefers this way:
CMakeLists.txt:
Here
dummy.c
is an empty file, which is listed for theadd_executable()
command only for make resulted executable dependent on the linker script via the OBJECT_DEPENDS property.