#cpp #git #visual_cpp
Как заставить Visual Studio автоматом при сборке присваивать макросу GIT_HASH значение хеша git, без использования дополнительных утилит/установки поддержки дополнительных языков. Чтобы на чистой машине, с установленным Visual Studio и git можно было собрать такой код: std::cout << "git hash: " << GIT_HASH << std::endl;
Ответы
Ответ 1
Используйте Pre-Build Event, в нем выполняйте echo и git rev-parse: echo | set /p _=#define GIT_HASH > rev.h git rev-parse --short=12 HEAD >> rev.h В свойствах проекта можно задать сразу несколько команд отдельными строчками. Конструкция echo | set /p _= позволяет убрать перевод строки. Пример использования rev.h : #include "rev.h" #define STRINGIFY_(x) #x #define STRINGIFY(x) STRINGIFY_(x) #define GIT_HASH_STR STRINGIFY(GIT_HASH) int main() { std::cout << GIT_HASH_STR << '\n'; }Ответ 2
Альтернативный вариант с использованием for /f (так же в Pre-Build Event - Command Line) for /f "delims=" %%a in ('"git rev-parse --short=12 HEAD"') do @echo #define GIT_HASH "%%a" > git_hash.h Перед сборкой будет создаваться файл git_hash.h содержащий строку: #define GIT_HASH "325f66c2c290" Использование: #include#include "git_hash.h" int main() { std::cout << GIT_HASH << std::endl; }
Комментариев нет:
Отправить комментарий