【问题标题】:Creating a git commit id file in the project build folder using CMake使用 CMake 在项目构建文件夹中创建 git commit id 文件
【发布时间】:2020-06-24 20:19:02
【问题描述】:
  1. 首先,我定义了COMMIT_ID 变量:
    execute_process(COMMAND git rev-parse HEAD
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
        OUTPUT_VARIABLE COMMIT_ID )
  1. 如果您指定COMMIT_ID 变量,则不会构建项目:
    add_custom_command(TARGET ${APP_NAME} POST_BUILD
        WORKING_DIRECTORY
            $<TARGET_FILE_DIR:${APP_NAME}>
        DEPENDS
            ${COMMIT_ID}
        COMMAND
            ${CMAKE_COMMAND} -E echo ${COMMIT_ID} > ./version.md
        COMMENT
            "Generating file version.md"
        VERBATIM)
  1. 但是,如果您指定一个静态字符串,则项目的构建不会出错:
    add_custom_command(TARGET ${APP_NAME} POST_BUILD
        WORKING_DIRECTORY
            $<TARGET_FILE_DIR:${APP_NAME}>
        DEPENDS
            ${COMMIT_ID}
        COMMAND
            ${CMAKE_COMMAND} -E echo "COMMIT_ID" > ./version.md
        COMMENT
            "Generating file version.md"
        VERBATIM)

【问题讨论】:

  • 请注意,我认为DEPENDS 参数适用于目标名称、文件名或路径。当您向DEPENDS 提供变量时,我认为它不会按预期工作。

标签: cmake cmake-custom-command


【解决方案1】:

使用${COMMIT_ID} 变量的问题在于它可能包含尾随空格或换行符,因为它是在execute_process 中创建的。您可以在变量中使用execute_process 之前添加OUTPUT_STRIP_TRAILING_WHITESPACE 参数来清理它的输出:

execute_process(COMMAND git rev-parse HEAD
    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
    OUTPUT_VARIABLE COMMIT_ID
    OUTPUT_STRIP_TRAILING_WHITESPACE
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-09
    • 2020-03-14
    • 2022-10-04
    • 2017-01-09
    • 2017-10-31
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多