Мы ищем способ автоматического включения какого-либо идентификатора сборки в наши сборки. Это должно быть переносимым (VC ++, g ++ в Linux и Mac) и автоматическим. VC ++ - это то, что важнее всего, поскольку в других средах мы используем собственные сценарии сборки Python, поэтому я могу делать все, что захочу.
Мы используем SVN, поэтому мы рассматривали использование вывода svnversion, чтобы записать ревизию в заголовок и включить ее. Это имеет проблемы: если мы поместим файл в SVN, он будет каждый раз выглядеть как измененный, но это будет лишний коммит и в некотором смысле создаст бесконечный цикл увеличивающихся ревизий. Если мы не поместим файл в SVN и просто создадим его как шаг перед сборкой, исходники не будут полными, поскольку для генерации этого файла им потребуется шаг перед сборкой или Makefile.
Мы также могли бы использовать __DATE__
, но мы не можем гарантировать, что файл, который использует __DATE__
(т.е. записывает его в файл журнала), будет скомпилирован, если какой-либо другой файл будет изменен - за исключением того, что мы «дотронемся» до него , но тогда мы заставили бы проект быть всегда устаревшим. Мы могли бы коснуться его в качестве шага перед сборкой, так что к нему можно было бы прикоснуться только в том случае, если остальная часть проекта устарела, что не приведет к ложной компиляции, но если VC ++ вычисляет зависимости до до шаг сборки, это не сработает (файл с __DATE__
не будет скомпилирован)
Есть интересные идеи?