У меня есть проект C++, который строится на нескольких платформах.
В Mac OSX и Linux я использую SConstruct, что позволяет мне проявлять некоторую «умность» в отношении различных этапов компиляции. А именно, я мог бы поместить версию программы в файл с именем VERSION
в корне репозитория, содержимое которого просто:
2.0
В сборке SConscript мне просто нужно открыть, прочитать и проанализировать этот файл, и я могу создать динамические определения на его основе. Например:
env.Append(CXXFLAGS=['-DVERSION_MAJOR=%s' % open('VERSION').read().split('.')[0]])
Это по понятным причинам очень удобно. Это также позволяет мне, например, поместить сегодняшнюю дату в переменную среды.
Теперь для Windows у меня есть файл .sln
с разными файлами .vcxproj
, в которые я хотел бы сделать что-то подобное, но я понятия не имею, как это сделать.
Подводя итог, мой вопрос: как я могу иметь такие «умные» определения (чтение, анализ файла и помещение его содержимого в несколько переменных среды) без необходимости вручную изменять файлы .sln
/.vcxproj
при каждой смене версии?
Я знаю, что мог бы использовать SCons и в Windows, но я бы не хотел этого делать (главным образом потому, что он кажется менее популярным на платформе, и я не хочу пугать потенциальных участников, которые знают только инструменты, специфичные для Windows).