在构建时执行cmake execute_process以在构建时获取git commit哈希

时间:2019-11-01 23:30:32

标签: c++ cmake

我想使用cmake execute_process或类似方法在构建时而不是在配置时获取git hash。我可以在配置时运行它并填充git哈希,但是我想在构建时对其进行更新。

这是我在配置时必须获取git hash的示例。

(这是来自Profession Cmake https://crascit.com/professional-cmake/的示例)

foobar_version.cpp.in

std::string getFooBarGitHash()
{
   return "@FooBar_GIT_HASH@";
}

CMakeLists.txt

find_package(Git REQUIRED)
execute_process(
   COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
   RESULT_VARIABLE result
   OUTPUT_VARIABLE FooBar_GIT_HASH
   OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(result)
    message(FATAL_ERROR "Failed to get git hash: ${result}")
endif()

configure_file(foobar_version.cpp.in foobar_version.cpp @ONLY)

这可以正常工作,并按预期的方式用git hash填充foobar_version.cpp文件,但我想在构建时运行它。有方便的方法吗?

0 个答案:

没有答案