CMake:如何为可执行文件添加对链接描述文件的依赖性

时间:2015-09-30 11:16:43

标签: cmake

我有一个CMake脚本,其中最终的可执行文件与我自己的链接器脚本链接:

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
)

如何使可执行文件也依赖于链接描述文件(如果更改linker.ld则触发链接)?

2 个答案:

答案 0 :(得分:13)

您可以使用LINK_DEPENDS向可执行目标添加set_target_properties属性。在add_executable命令后添加以下行:

set_target_properties(${TARGET_NAME} PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT})

set_target_properties的第一个参数是目标名称,即您传递给add_executable的第一个参数。

答案 1 :(得分:1)

我发现this mail描述了强制可执行文件依赖于链接描述文件的三种可能方法。它的作者更喜欢这样:

<强>的CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(LINKERSCRIPT C)
FILE(WRITE main.c "void main(){}")
# dummy.c must exist:
ADD_EXECUTABLE(EXE main.c dummy.c)
# linkerscript must exist:
SET_SOURCE_FILES_PROPERTIES(
    dummy.c PROPERTIES OBJECT_DEPENDS ${CMAKE_SOURCE_DIR}/linkerscript
)

此处dummy.c是一个空文件,仅为add_executable()命令列出,仅通过OBJECT_DEPENDS属性生成依赖于链接描述文件的make可执行文件。

相关问题