% (AdditionalIncludeDirectories), что означает

Подумайте, это будет довольно просто, но почему-то я не мог найти ссылку на это.

В каталогах MSVC Include есть параметр Дополнительные каталоги Include. Настройка читается следующим образом

..\Project1; % (AdditionalIncludeDirectories)

Понять первую часть - это путь к программе для поиска дополнительного заголовка программы. Что относительно "% (ДополнительныеIncludeDirectories)"? что это значит?

Это не похоже на макрос, который, как я понимаю, возглавляет "$", например $MACRO

Спасибо

Ответ 1

Ответ

В документация для работы с Свойствами проекта существует раздел "Макросы элементов":

Макросы элементов

Синтаксис % (имя). Для файла макрос элемента применяется только к этому файлу, например, вы можете использовать % (дополнительныеIncludeDirectories), чтобы указать каталоги включений, которые применяются только к определенному файлу. Этот тип макроса элементов соответствует метаданных ItemGroup в MSBuild. Когда он используется в контексте конфигурации проекта, макрос элемента применяется ко всем файлам определенного типа. Например, свойство конфигурации C/С++ Определение препроцессора может содержать макрос элемента % (препроцессорные определения), который применяется ко всем файлам .cpp в проекте. Этот тип макроса элементов соответствует метаданным ItemDefinitionGroup в MSBuild. Для получения дополнительной информации см. Определения элементов.

Обсуждение

У меня была точно такая же проблема в проекте, который я принимаю от бывшего разработчика: его дополнительные каталоги Include C:\Users\t-tshmit\Downloads\DirectXTK;$(ProjectDir);$(IntermediateOutputPath);%(AdditionalIncludeDirectories)

Additional Include Directories flyout

И странно, что элемент %(AdditionalIncludeDirectories) не включен в поле редактирования

Edit box for Additional Include Directories

Оглядываясь в Интернете, я не мог найти многого в этом, но это явно образец в использовании, например, скриншот, используемый в http://www.steptools.com/support/stdev_docs/help/settings_vc10.html может содержать элемент %(AdditionalIncludeDirectories).

Документация для Дополнительные параметры компилятора Include Directories и ДополнительныеIncludeDirectories Свойство VCCL Compiler Tool не упоминает этот шаблон %(NAME).

Ответ 2

https://docs.microsoft.com/en-us/cpp/build/reference/common-macros-for-build-commands-and-properties?view=vs-2019

Они называются "макросы метаданных элемента".

Система сборки для C++ была значительно изменена между Visual Studio 2008 и Visual Studio 2010. Многие макросы, использованные в более ранних типах проектов, были заменены новыми. Эти макросы больше не используются или были заменены одним или несколькими эквивалентными свойствами или значениями макроса метаданных элемента (% (имя)). Макросы, помеченные как "перенесенные", можно обновить с помощью инструмента миграции проекта. Если проект, содержащий макрос, перенесен из Visual Studio 2008 или более ранней версии в Visual Studio 2010, Visual Studio преобразует макрос в эквивалентный текущий макрос. Более поздние версии Visual Studio не могут конвертировать проекты из Visual Studio 2008 и более ранних версий в новый тип проекта. Вы должны преобразовать эти проекты в два этапа; сначала преобразуйте их в Visual Studio 2010, а затем преобразуйте результат в более новую версию Visual Studio. Для получения дополнительной информации см. Обзор потенциальных проблем обновления.