Как иметь разные зависимости проекта для каждой конфигурации проекта? - PullRequest
6 голосов
/ 05 октября 2009

Я хотел бы иметь разные зависимости проекта в зависимости от того, какую конфигурацию проекта я сейчас строю.

Например, я не хочу собирать и связывать SomeTestLib.vcproj в конфигурации выпуска, но я бы хотел собрать и связать с ним в Debug.

Одним из решений, которое работает сорта, является использование макросов условной компиляции:

#ifdef DEBUG  
#pragma comment( lib, "SomeTestLib" )  
#endif

Но в этом случае отладчик и IntelliSense не работают для SomeTestLib.
Могу ли я использовать взлом .sln или .vcproj?
Благодарю.

Ответы [ 6 ]

7 голосов
/ 19 января 2010

После поисков в Google в течение нескольких дней я, наконец, разочаровался в поиске решения этой проблемы и взорвал разработчика VS, который дал мне обходной путь для этой проблемы (на самом деле, я пытался найти разные способы самостоятельно, чтобы найти это) .

Очевидно, IDE недостаточно умна, чтобы выяснить, что вы отключили сборку для конкретной библиотеки в данной конфигурации, и не добавлять вывод этого проекта в командную строку компоновщика для проектов, которые зависят от него. Я уверен, что вы знаете об этом.

Однако, поскольку он просто вставляет выходную строку из библиотечного проекта в командную строку зависимого проекта, установка выходной строки в значение "" приведет к тому, что НИЧЕГО не будет добавлено в командную строку компоновщика в зависимых проектах!

Надеюсь, эта проблема будет исправлена ​​в Visual Studio в будущем. Я остаюсь оптимистом, потому что это моя любимая среда разработки, и меня всегда впечатляют функции, которые она поддерживает. Тем не менее, некоторые из потоков справки VS, которые я видел, говорят, что эта ошибка «специально», поэтому, возможно, они не исправят ее. Это, кажется, достаточно просто сделать.

В любом случае, подведем итог:

  • Щелкните правой кнопкой мыши по проекту вашей библиотеки в обозревателе решений и выберите «Свойства».
  • Переключитесь на пару «Конфигурация / Платформа», для которой не создается ваш библиотечный проект.
  • Выберите «Свойства конфигурации -> Библиотекарь -> Общие».
  • В поле «Выходной файл» введите «» (то есть открытые символы, пробел, закрытые символы).
  • Нажмите ОК.

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

Надеюсь, это поможет!

Daniel

3 голосов
/ 03 ноября 2009

Можно отключить свойство зависимостей библиотеки Linker / General / Link в зависимом проекте и поместить библиотеку во входные данные компоновщика в соответствующих конфигурациях.

Это делает ссылки на проекты менее полезными, но работоспособными.

1 голос
/ 21 ноября 2011

Установите тип конфигурации Utility вместо приложения / библиотеки в свойствах проекта -> General.

0 голосов
/ 12 июня 2012

В основном проекте перейдите в Configuration Properties -> Linker -> Input, в разделе под названием «Ignore Specific Library» добавьте библиотеку, которую вы хотите добавить, например: .lib. Сделайте это снова для другой конфигурации, за исключением того, что игнорируйте другую библиотеку lib / dll.

Наконец, если вы не хотите, чтобы каждый проект строился для обеих конфигураций, щелкните правой кнопкой мыши Решение -> Зависимости проекта -> [Выберите основной / проект верхнего уровня] -> Снимите флажок с проекта, который вы не хотите создавать / игнорировать .

Этот метод имеет то преимущество, что вы все равно можете вручную собрать каждый проект, если хотите, но можете переключать конфигурации и использовать только ту библиотеку lib / dll, которую вы хотите.

0 голосов
/ 05 октября 2009

Щелкните правой кнопкой мыши ваше решение и выберите свойства. Откроется страница свойств решения ..

На правой странице выберите Свойства конфигурации >>> Конфигурация

Здесь вы можете выбрать конфигурацию сборки для Debug, Release и All type build, установив флажок с надписью Build.

0 голосов
/ 05 октября 2009

В visual studio каждая конфигурация сборки содержит собственный список свойств для вашего проекта. Просто добавьте свою библиотеку в ту конфигурацию сборки, которая вам нужна. Только не добавляйте в «Все конфигурации»

...