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

vlk*_*vlk 11 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
)
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*ter 16

您可以在添加LINK_DEPENDS财产可执行的目标,使用set_target_properties.在add_executable命令后添加以下行:

set_target_properties(${TARGET_NAME} PROPERTIES LINK_DEPENDS ${LINKER_SCRIPT})
Run Code Online (Sandbox Code Playgroud)

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

  • 问题是cmake在构建目录中而不是在源目录中搜索`$ {LINKER_SCRIPT}`.其实我有解决方案来添加`$ {CMAKE_SOURCE_DIR}/$ {LINKER_SCRIPT} (2认同)