При использовании исходного кода вы можете использовать команду git describe
, чтобы получить номер текущей версии.Автоматически включать текущий номер версии при компиляции
При использовании двоичного кода, я добавил опцию, которая позволяет пользователям передавать в --version
флаг, чтобы получить, что номер текущей версии:
if (argc >= 2) {
if (argv[1] == "--version") {
cout << "eval version v0.1-16-g74a9332";
}
}
Проблема заключается в том, что значение v0.1-16-g74a9332
теперь жёстко в мой источник. Если я уйду и что-то изменим где-нибудь еще, мне придется увеличивать это значение каждый раз, когда я совершаю (что просто требует конфликтов слияния!)
Кроме того, часть g74a9332
является хешем текущей фиксации. Если я изменю это значение в исходном коде, изменяется хэш фиксации.
Есть ли какой-либо способ для меня, а не hardcode номер версии в коде, имеет ли C++ «знать» номер версии v0.1-16-g74a9332
, когда он компилирует двоичный файл?
Я также использую 'make' для компиляции, поэтому ответы, которые включают в себя это требование допускается, но я надеялся на какой-то вариант компилятора или функцию. – IQAndreas
Меня тоже интересует решение. Обычно я использую версию как ветку (майор)/комментарии (минор). – Stormbringer
@IQAndreas В вашем коде есть элементарная ошибка (и в другом правильном решении @ Oleg). 'argv [1] ==" --version "' представляет собой сравнение двух разных указателей 'char *' и всегда будет терпеть неудачу.Вам нужно 'std :: string (argv [1]) ==" -version "' –