Добавить хеш git в исходный код

303
14 июня 2017, 02:42

Как заставить Visual Studio автоматом при сборке присваивать макросу GIT_HASH значение хеша git, без использования дополнительных утилит/установки поддержки дополнительных языков. Чтобы на чистой машине, с установленным Visual Studio и git можно было собрать такой код:

std::cout << "git hash: " << GIT_HASH << std::endl;
Answer 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';
}
Answer 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 <iostream>
#include "git_hash.h"
int main() {
    std::cout << GIT_HASH << std::endl;
}
READ ALSO
Странный конфликт jQuery и Google Chrome Api

Странный конфликт jQuery и Google Chrome Api

Столкнулся со странными поведением JQ и хрома, а именно, в консоль выдает следующие ошибки:

351
Управление обработчиком [требует правки]

Управление обработчиком [требует правки]

Есть обработчикbind, обрабатывает от scroll, как выполнять другие функции если: скроллишь вверх, вниз или не скроллишь

223
Как отловить событеие submit через addEventListener?

Как отловить событеие submit через addEventListener?

пытаюсь добавить передаваемые данные при отправке формы пост собствено вот форма

449