我想将当前的git commit哈希读取到一个变量中,并从中生成version.h
。此命令取决于我的主要目标作为预构建命令,因为version.h
必须在构建之前生成:
# Get the current git commit
add_custom_command(
TARGET ${MY_MAIN_TARGET} PRE_BUILD
COMMAND git rev-parse HEAD > git-commit.txt
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
这很好。现在,我想将其读入变量:
file(READ "${CMAKE_BINARY_DIR}/git-commit.txt" GIT_COMMIT)
然后生成version.h(此模板使用${GIT_COMMIT}
变量):
configure_file(version.h.in "${CMAKE_CURRENT_BINARY_DIR}/version.h" @ONLY)
问题是:如何创建configure_file()
后才能读取此文件并执行git-commit.txt
命令?有没有办法制作仅运行CMake脚本代码的自定义命令/目标?
还有execute_process()
可以直接读入变量,但没有DEPENDS
。
答案 0 :(得分:0)
解决方案是像这样简单地使用execute_process
:
# Get the current commit
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
..然后在version.h.in
模板中使用该输出变量。