В чем разница между «Включить каталоги» и «Дополнительные каталоги включения»

94

В свойствах конфигурации моего проекта в разделе «Каталоги VC ++» есть запись «Включить каталоги». Но в разделе «C / C ++» есть еще одна запись под названием «Дополнительные подключаемые каталоги». То же самое происходит с каталогами библиотек.

В чем разница между этими двумя записями?

введите описание изображения здесь введите описание изображения здесь

Артиум
источник

Ответы:

48

Это неудобство, появившееся в VS2010. Настройки каталогов VC ++ раньше располагались в разделах Инструменты + Параметры, Проекты и решения, Каталоги VC ++. Глобальные настройки, применяемые к каждому проекту, созданному на машине. Он все еще существует, но указывает на то, что теперь вы должны изменить его в настройках вашего проекта. Побочный эффект капитального ремонта механизма сборки в VS2010, позволяющий сборку с помощью msbuild. Удаление настроек для каждого проекта было бы логичным, но это сломало бы слишком много существующих проектов.

Таким образом, вероятно, лучше всего рассматривать настройки каталогов VC ++ как настройки компьютера по умолчанию. Он автоматически устанавливается установщиком VS. Повозитесь с ним, только если вам нужен необычный порядок поиска в каталогах, помещая пользовательские местоположения в последнюю очередь. Это очень необычно.

Однако это работает. И в конце концов этим воспользовались. Расширение возможностей настройки Platform Toolset в VS2012 и более поздних версиях. Другой компилятор, другой компоновщик, разные каталоги #include, другой путь поиска компоновщика. Изменено всего одним параметром, приятно.

Ганс Пассан
источник
3
Хм ... Это есть правда , что варианты создания глобальной сохраняются в этом - но это свойство листа Microsoft.Cpp.Win32.userи только в этом. Если вы редактируете запись «Каталоги VC ++» при активном проекте или другом листе свойств, то изменение будет сохранено в .vcxprojфайле или в соответствующем .propsфайле и вообще не будет глобальным или общедоступным.
Мартин Ба,
25

Включают Каталоги соответствует переменной окружения INCLUDE.

Параметры каталога, отображаемые в окне, представляют собой каталоги, в которых Visual Studio будет искать файлы включения, указанные в файлах исходного кода. Соответствует переменной окружения INCLUDE.

В то время как дополнительные каталоги включения передаются через аргумент командной строки (т.е. \Iпараметр).

CodeNaked
источник
19

НАСТРОЙКА ПУТИ

Каталоги VC ++: включить каталоги

  • это значение наследуется от переменной среды INCLUDE Windows, которая определена вне Visual Studio
    • переменные среды могут быть: глобальными для компьютера или иметь область действия на уровне пользователя
    • INCLUDEИ LIBпеременные среды создаются , когда Microsoft Windows SDK устанавливается с Visual Studio .

C / C ++: дополнительные каталоги включения

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

ДОПОЛНИТЕЛЬНЫЕ ЗАМЕЧАНИЯ

Какой мне использовать?

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

  • что вы можете последовательно и надежно воссоздавать среду разработки (подумайте: передача исходного кода другому разработчику)
  • для разработчиков внутри организации используйте последовательный подход

Замечание о макросах

  • C ++ конфигурации проекта макросы (не следует путать с C ++ препроцессор #defineDirective) наследует контент из различных источников. Макросы вроде ...
    • $(Include)наследуют свои значения из переменных среды Windows
    • $(OutDir)наследуют свои значения из Visual Studio IDE

ССЫЛКИ

Pressacco
источник