如何在CMAKE_C_LINK_EXECUTABLE中获取目标基本名称?

时间:2016-06-08 23:05:48

标签: cmake

我想在CMake中的链接命令中添加一个帖子链接步骤。例如。类似的东西:

set(CMAKE_C_LINK_EXECUTABLE
    "${CMAKE_C_LINK_EXECUTABLE}"
    "postlink <TARGET> ${CMAKE_BINARY_DIR}/$$(basename <TARGET>).foo")

$$(basename <TARGET>)是令人头痛的部分。这是行不通的。没有反叛。 <TARGET_BASE>给出没有扩展名的文件路径但是如何摆脱目录路径?我可以通过使用postlink命令的包装脚本解决它,但它会非常难看,我只是想知道是否有更好的方法来做它。

1 个答案:

答案 0 :(得分:0)

您可以使用add_custom_command(TARGET ... POST_BUILD ...)执行此操作,而不是更改CMAKE_C_LINK_EXECUTABLE

function(add_post_processing_to_target _target)
    add_custom_command(
        TARGET ${_target}
        POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E echo "--- postlink $<TARGET_FILE:${_target}>"
        COMMAND postlink $<TARGET_FILE:${_target}> ${CMAKE_BINARY_DIR}/${_target}.foo
    )
endfunction()

要回答原始问题,请尝试<TARGET_NAME>