строительство проекта с надстройкой и без

У меня есть проект, который может использовать библиотеку наддува, а может и не использовать ее.
У меня есть лист недвижимости 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 из командного файла.

-1

Решение

Как решение для меня, я добавил новую конфигурацию проекта (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
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]