Как сделать зависимость проекта Visual Studio 2010 от конфигурации? - PullRequest
4 голосов
/ 09 ноября 2010

Этот может быть немного странным. У меня есть решение в Visual Studio 2010 с тремя проектами C ++. Две библиотеки и одно исполняемое приложение. Две конфигурации. В одной конфигурации мне нужно, чтобы исполняемое приложение имело зависимость проекта от одной библиотеки, в другой конфигурации мне нужно, чтобы исполняемое приложение зависело от проекта другой библиотеки.

В частности, есть реализация Direct3D9 в первой библиотеке и реализация OpenGL во второй библиотеке. Третий проект - это тестовая программа, которая использует один и тот же интерфейс для обоих, с той лишь разницей, какая библиотека связана с ней. В проекте тестового комплекта существуют две конфигурации, по одной для каждой реализации. Я не могу установить, чтобы проект тестового комплекта зависел от каждой библиотеки реализации отдельно в зависимости от активной конфигурации.

Как сделать зависимости проекта зависящими от конфигурации?

Ответы [ 3 ]

3 голосов
/ 09 ноября 2010

Является ли проект C ++ форматом msbuild? Если это так, вы должны просто поставить условие на ссылку. Сделайте ссылку на оба проекта, а затем отредактируйте файл проекта и добавьте условие для каждого из них. Вот как это будет работать в проекте C #, не уверен, что C ++ такой же:

<ProjectReference Include="..\DirectXLib\DirectXLib.csproj" Condition=" '$(Configuration)' == 'DirectX' ">
  <Project>{99999-9999-9999-9999-99999999999}</Project>
  <Name>DirectXLib</Name>
</ProjectReference>
<ProjectReference Include="..\OpenGLLib\OpenGLLib.csproj" Condition=" '$(Configuration)' == 'OpenGL' ">
  <Project>{99999-9999-9999-9999-99999999999}</Project>
  <Name>OpenGLLib</Name>
</ProjectReference>
0 голосов
/ 01 апреля 2014

Один трюк, который, кажется, работает из IDE:

  • Пусть обе библиотеки также имеют конфигурацию NOT_USED;

  • задают тип конфигурации(в общих свойствах: Общие: Проект по умолчанию) в Application (.exe) для библиотек в конфигурации NOT_USED.

Это заставит VS думать, что в результате этих действий у него нет библиотеки.проекты, и, следовательно, не предоставляют ошибку ссылки.

0 голосов
/ 09 ноября 2010

Я думаю, что цель диспетчера конфигурации - это то, что вы спрашиваете, не так ли?

На уровне решения вы указываете, какие конфигурации вы хотите построить, и для каждой конфигурации вы можете указать, какие проектыВы хотите построить и в каком порядке.И в настройках каждого проекта вы можете указать, какие библиотеки включать и целый ряд других вещей, которые вы хотите сделать.

...