Как заставить Visual Studio автоматом при сборке присваивать макросу GIT_HASH значение хеша git, без использования дополнительных утилит/установки поддержки дополнительных языков. Чтобы на чистой машине, с установленным Visual Studio и git можно было собрать такой код:
std::cout << "git hash: " << GIT_HASH << std::endl;
Используйте 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';
}
Альтернативный вариант с использованием 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 <iostream>
#include "git_hash.h"
int main() {
std::cout << GIT_HASH << std::endl;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники