Visual Studio C ++ добавляет стандартное расположение заголовка только с переменной среды - PullRequest
0 голосов
/ 07 июня 2019

У меня есть внешняя зависимость в моем проекте, которую я не могу изменить.Он построен на очень сложном Python, который вызывает еще несколько инструментов сборки.

Все это в конечном итоге сводится к ошибке компиляции: C ++ просто не может найти файл заголовка.

Файл заголовка включеннапример:

#include <sqlite3.h>

Вопрос:

Можно ли добавить пользовательский каталог include в Visual Studio C ++ с помощью только переменных среды.И если это - как?

Я не могу изменить ни решение, ни проект, ни исходные файлы - все они загружаются автоматически

Я использую самую последнюю визуальную студию - 2017

1 Ответ

0 голосов
/ 10 июня 2019

Можно ли добавить пользовательский каталог include в Visual Studio C ++ с помощью только переменных среды.

Боюсь, ответ отрицательный. Невозможно добитьсяэта цель только с переменной среды.

  1. Пожалуйста, отметьте this : при компиляции проекта в VS, если компилятор встречает инструкцию #include, он пытается открыть указанный файл.Если файл является абсолютным путем, он пытается загрузить только с этого конкретного пути.

Если файл является относительным путем, он пытается загрузить из каталога файла, который компилируется первым.Если файл не найден в той же папке, что и файл cpp, компилятор пробует каждый из путей в своем списке «Включить каталоги», чтобы найти файл.

И в VS IDE мы можем установить Include Directories или Additional Include Directories для установки пути поиска. Так что, если у меня есть файл заголовка Test.h, и я использую оператор, такой как #include <AbsolutePath\Test.h>, компилятор может найтиheader.

Если я использую оператор типа #include <Test.h>, файл заголовка не может быть найден, пока я не установлю путь поиска.В этой ситуации я могу установить Additional Include Directories для всех как отладки, так и выпуска, чтобы компилятор мог найти файл заголовка (Test.h находится в папке Company):

enter image description here

Примечание: Но большую часть времени мы должны знать, что когда мы меняем настройки в Project => Properties, мы на самом деле модифицируем файл проекта. (Xx.vcxproj).

Как вы упомянули выше, мы не можем вносить какие-либо изменения в файлы проекта, поэтому мы не можем достичь цели таким способом.Вместо этого я думаю, что вы можете попробовать использовать Directory.build.props file.

Создать файл Directory.Build.props, переместить его в корневой каталог вашей папки проекта.Для меня: C:\Users\userName\source\repos папка.Добавьте в него содержимое, как показано ниже:

<Project>
 <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>C:\Company;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    </ClCompile>
  </ItemDefinitionGroup>
</Project>

Мы можем поместить заголовочный файл в папку C:\Company (мы можем указать нашу папку таким образом), и компилятор сможет ее найти.Кроме того, мы не вносим никаких изменений в решение, проект или исходный файл.

Пожалуйста, дайте мне знать, если это полезно :) Любая обратная связь, не стесняйтесь связаться со мной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...