我想使用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文件,但我想在构建时运行它。有方便的方法吗?