Как мы можем применить управление версиями к исполняемым файлам / двоичным файлам в C ++? - PullRequest
0 голосов
/ 08 октября 2019

У меня есть большое приложение на C ++, которое мы компилируем через Jenkins и генерируем сжатые артефакты, содержащие двоичные файлы, заголовки, конфигурацию и другие соответствующие файлы. Сборка развернута в виде сервисов на клиенте. Проблема в том, как применить версию к этим двоичным файлам, чтобы сохранить часть развернутой сборки на каком клиенте?

Как и в предыдущем приложении C #, которое мы использовали, вносите изменения в файл AssemblyVersion с помощью тегов, которые мы применяем в GIT изатем скомпилируйте, и мы увидим, что исполняемый файл имеет примененную версию. Есть ли способ сделать то же самое в C ++?

Мы используем файл CMakeLists.txt для генерации сборок. У нас есть среда на основе Linux (CentOS 7.5), приложение разработано на C ++.

Спасибо за достижения!

1 Ответ

0 голосов
/ 08 октября 2019

Поскольку вы используете CMake, вы можете использовать функцию configure_file() в вашем CMakeLists.txt, чтобы создать исходный файл C ++, содержащий информацию о версии Git в виде строки, а затем включитьсозданный файл в вашу цель.

Вы можете получить информацию о версии Git в переменную CMake, вызвав исполняемый файл git из CMake, хотя существует предварительно написанных модулей для выполнения тяжелой работы.

Затем вы можете использовать инструменты командной строки strings и grep, чтобы найти строку версии в двоичном файле, или какой-либо другой метод, чтобы получить ее программно, в зависимости от того, делаете ли вы исполняемый файл или библиотеку.

...