Я хочу прочитать текущий хеш коммита git в переменную и сгенерировать 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
.