У меня есть проект, который может использовать библиотеку наддува, а может и не использовать ее.
У меня есть лист недвижимости use_boost
которые могут быть добавлены в проект, и там установлены путь для повышения и <PreprocessorDefinitions>
тег со значением I_AM_USING_BOOST
,
В коде у меня есть что-то вроде:
#ifdef I_AM_USING_BOOST
#include <boost/any.hpp>
#else
#include <string>
#endifnamespace test
{#ifdef I_AM_USING_BOOST
using my_defined_type = boost::any;
#else
using my_defined_type = std::string;
#endif}
Поэтому, если я не хочу сборку с надстройкой, я удаляю страницу свойств.
Если я хочу построить с Boost, я добавляю лист свойств в проект.
Теперь я хочу создать обе версии библиотеки: одну, использующую boost, и другую, не использующую boost.
Могу ли я иметь один проект с двумя разными сборками: одна с надстройкой, а другая без наддува, но без добавления или удаления листа свойств вручную?
Я строю с использованием msbuild из командного файла.
Как решение для меня, я добавил новую конфигурацию проекта (Release_no_boost), и в этой конфигурации я удалил лист свойств, используя библиотеку boost.
Итак, теперь в командном файле я могу запустить msbuild для обоих вариантов, вызвав разные конфигурации.
У меня сейчас в командном файле:
msbuild /t:rebuild /p:Configuration=Release D:\projects\some_test\test_1\test_1.vcxproj
msbuild /t:rebuild /p:Configuration=Release_no_boost D:\projects\some_test\test_1\test_1.vcxproj
Это может также использоваться для решения с несколькими проектами, но необходимо создать конфигурацию решения, и для каждого проекта в решении, которое является сборкой, задается требуемая конфигурация проекта.
Разница в пакете заключается в том, что вместо файла проекта в качестве параметра указывается файл решения:
msbuild /t:rebuild /p:Configuration=Release D:\projects\some_test\some_test.sln
msbuild /t:rebuild /p:Configuration=Release_no_boost D:\projects\some_test\some_test.sln
Других решений пока нет …