Перейти к содержимому

Как изменить include path vs code

  • автор:

Как изменить include path vs code

В этой статье (перевод документации [1]) объясняется схема файла настроек c_cpp_properties.json. Для дополнительной информации по этим настройкам см. описание кастомизации настроек по умолчанию [3] и конфигурирование IntelliSense для кросс-компиляции [4].

Пример файла c_cpp_properties.json:

< "env": < "myDefaultIncludePath": ["$", "$/include"], "myCompilerPath": "/usr/local/bin/gcc-7" >, "configurations": [ < "name": "Mac", "intelliSenseMode": "clang-x64", "includePath": ["$", "/another/path"], "macFrameworkPath": ["/System/Library/Frameworks"], "defines": ["FOO", "BAR=100"], "forcedInclude": ["$/include/config.h"], "compilerPath": "/usr/bin/clang", "cStandard": "c11", "cppStandard": "c++17", "compileCommands": "/path/to/compile_commands.json", "browse": < "path": ["$"], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" > > ], "version": 4 >

[Свойства верхнего уровня]

env Массив определяемых пользователем переменных, которые будут доступны для подстановки в конфигурациях через стандартный синтаксис переменных окружения: $> или $>. Принимаются строки и массивы строк.

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

version Это поле редактировать не рекомендуется. Оно отслеживает версию файла c_cpp_properties.json, чтобы расширение знало, какие свойства и настройки должны присутствовать, и как обновить этот файл до последней версии.

[Свойства конфигурации]

name Понятное имя, идентифицирующее конфигурацию. Значения «Linux», «Mac» и «Win32» это специальные идентификаторы для конфигураций, которые будут автоматически выбраны на соответствующих платформах. Строка состояния в правом нижнем углу окна VS Code покажет, какая из конфигураций активна. Вы можете кликнуть на этой метке в строек состояния, чтобы поменять активную конфигурацию.

compilerPath (опционально) Полный путь до компилятора, используемого для сборки вашего проекта, например /usr/bin/gcc, чтобы IntelliSense была более точной. Расширение будет анализировать компилятор, чтобы определить системные пути подключения заголовков (system include path) и определения по умолчанию для использования IntelliSense.

Если установить «compilerPath»: «» (пустая строка), то опрос компилятора пропускается. Это полезно, если указанный компилятор не поддерживает аргументы, используемые для опроса, поскольку расширение будет по умолчанию возвращено любому компилятору, который оно сможет найти (наподобие Visual C). Если опустить свойство compilerPath, то опрос компилятора не пропускается.

compilerArgs (опционально) Аргументы компилятора для модификации используемых подключений заголовков или определений, например -nostdinc++, -m32, и т. д.

intelliSenseMode Режим для IntelliSense, который используется для сопоставления со специфичным для архитектуры вариантом MSVC, gcc или Clang. Если не установить это свойство, если оно установлено в $, то расширение выберет значение по умолчанию для этой платформы.

Windows: msvc-x64
Linux: gcc-x64
macOS: clang-x64

includePath Путь для подключения это папка, где содержатся файлы хедеров, которые компилятор ищет по директивам препроцессора (типа #include «myHeaderFile.h» в исходном коде). Укажите список путей для системы IntelliSense, которые она будет использовать при поиске подключаемых файлов заголовков. Поиск по этим путям не рекурсивный. Указание ** задает рекурсивный поиск. Например $/** укажет искать заголовки во всех подкаталогах независимо от того, содержит ли $ их, или нет. Если на Windows установлена Visual Studio, или если указан компилятор в настройке compilerPath, то нет необходимости перечислять системные пути поиска заголовков в этом списке.

defines Список определений препроцессора для системы IntelliSense, чтобы она их использовала при парсинге файлов. Опционально используйте = для установки значения, например VERSION=1.

cStandard Версия стандарта языка C, которую будет использовать IntelliSense.

cppStandard Версия стандарта языка C++, которую будет использовать IntelliSense.

configurationProvider ID расширения VS Code, которое может предоставить для исходных файлов информацию о конфигурации IntelliSense. Например, используйте ID расширения VS Code ms-vscode.cmake-tools, чтобы предоставить информацию конфигурации из расширения CMake Tools. Если вы указали configurationProvider, то предоставленные конфигурации будут иметь приоритет над другими вашими настройками в c_cpp_properties.json.

Кандидат расширения configurationProvider должен реализовать vscode-cpptools-api.

windowsSdkVersion Версии путей подключения Windows SDK для использования на Windows, например 10.0.17134.0.

macFrameworkPath Список путей для системы IntelliSense, чтобы она их использовала при поиске подключаемых заголовков из фреймворков Mac. Поддерживается только в конфигурациях для macOS.

forcedInclude (опционально) Список файлов, которые должны быть подключены перед любыми другими символами в обрабатываемом исходном файле. Файлы подключается в порядке перечисления.

compileCommands (опционально) Полный путь до файла compile_commands.json для рабочего пространства. Пути подключения и определения, раскрытые в этом файле, будут использоваться вместо значений, установленных для настроек includePath и defines. Если база данных команд не содержит запись для элемента трансляции, который соответствует файлу, открытому в редакторе, то появится предупреждающее сообщение, и расширение будет использовать вместо compileCommands настройки includePath и defines.

Для дополнительной информации по формату файла compile_commands.json см. документацию [5]. Некоторые системы сборки, такие как CMake, просто генерируют этот файл.

browse Набор свойств, используемых в случае, когда «C_Cpp.intelliSenseEngine» установлено в «Tag Parser» (что известно как «fuzzy» IntelliSense, или подсистема «browse»). Эти свойства также используются Go для фич Definition/Declaration features, или когда «default» IntelliSense не может разрешить директивы #include в ваших файлах исходного кода.

path Список путей для Tag Parser, чтобы искать подключаемые в ваших исходниках заголовки. Если свойство path опущено, то в качестве path будет использоваться includePath. Поиск по этим путям по умолчанию рекурсивный. Укажите * для нерекурсивного поиска. Например $ будет задавать поиск по всем подкаталогам, а $/* нет.

limitSymbolsToIncludedHeaders Когда true, Tag Parser будет только парсить код файлов, которые были прямо или косвенно подключены исходным кодом в $. Когда false, Tag Parser будет парсить все файлы кода, найденные в путях списка browse.path.

databaseFilename Путь до сгенерированной базы данных символов. Это свойство инструктирует расширение сохранить базу данных символов Tag Parser-а где-нибудь в другом месте, отличающемся от хранилища по умолчанию рабочего пространства. Если указан относительный путь, то он будет сделан рекурсивным для хранилища по умолчанию рабочего пространства, но не самой папки рабочего пространства. Переменная $ может использоваться для указания пути относительно папки рабочего пространства (например $/.vscode/browse.vc.db).

Поддерживаемые переменные. Вы можете разрешить tasks.json или launch.json опрашивать текущую активную конфигурацию из c_cpp_properties.json. Чтобы это сделать, используйте переменную $ в качестве аргумента в скрипте tasks.json или launch.json.

[Ссылки]

1. VSCode c_cpp_properties.json reference site:code.visualstudio.com.
2. VSCode FAQ.
3. Customizing default settings site:code.visualstudio.com.
4. IntelliSense for cross-compiling site:code.visualstudio.com.
5. Clang JSON COMPILATION DATABASE FORMAT SPECIFICATION site:clang.llvm.org.
6. espressif / vscode-esp-idf-extension site:github.com.

Что делать если VS Code выдаёт ошибку про компиляции кода C++?

При попытке скомпилировать код VS Code выдаёт ошибку с просьбой изменить includepath, что делать в данном случае? Если что, компилятор у меня MinGW.

  • Вопрос задан более трёх лет назад
  • 3259 просмотров

4 комментария

Средний 4 комментария

WblCHA

Зачем ты меня пригласил как эксперта? Я на плюсах в вскоде ни разу не писал.
Поменяй язык на английский и загугли ошибку ─ это всё, чем я могу помочь.

vabka

Что в c_cpp_properties.json ?
Puj @Puj Автор вопроса

< "configurations": [ < "name": "Win32", "includePath": [ "$/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "intelliSenseMode": "msvc-arm64" > ], "version": 4 >

Настройка Visual Studio Code для компиляции C++

Подскажите пожалуйста как настроить includePath для компиляции своих программ в VSC. Всё уже перепробовал. Компиляцию запускаю через расширение C/C++ Runner. В разных файлах конфигурации пробовал добавлять путь к своей библиотеке, не работает. Не понимаю в чём дело.

Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp

  • eTarget 2011:Панельная дискуссия «Стратегия и планирование рекламной кампании в интернете»
  • eTarget 2011: Круглый стол «Реклама в онлайн-видео»
  • Могут ли «плохие» входящие ссылки привести к ухудшению ранжирования?

На сайте с 13.06.2020
13 февраля 2023, 07:13

Для настройки includePath в Visual Studio Code с помощью расширения C/C++ Runner вам нужно следующее:

Открыть файл c_cpp_properties.json, который может быть найден в меню проекта.

Внутри файла найдите поле «includePath» и добавьте в него путь к вашей библиотеке. Например:

"includePath": [ "$/**", "/usr/include/yourlibrary" ],

Cохраните файл и перезапустите Visual Studio Code.

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

На сайте с 27.10.2019
13 февраля 2023, 07:47

Всё так и делал, не помогает.

вот конфиг c_cpp_properties.json

 "configurations": [ 
"name": "windows-gcc-x64",
"includePath": [
"$/**",
"d:/Cpp/Library/**"
],
"compilerPath": "c:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe",
"cStandard": "$default>",
"cppStandard": "$default>",
"intelliSenseMode": "windows-gcc-x64",
"compilerArgs": [
""
]
>
],
"version": 4
>

Как только не указывал: «d:/Cpp/Library/*», » d:\\Cpp\\Library\\**», » d:\\Cpp\\Library\*», » d:\\Cpp\\Library\\» и тд. бесполезно

И в переменную среды Path добавил, не помогло ��

No such file or directory #include "_interface.h"

через командную сроку компилирую так: g++ -Wall -o «%e» «%f» -ID:/Cpp/Library -std=c++2a

Настройка проекта C++ для IntelliSense

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Иногда может понадобиться вручную настроить проект C++ для правильной работы функции IntelliSense. Для проектов MSBuild (на основе файлов с расширением .vcxproj) можно настроить параметры в свойствах проекта. Для других типов проектов нужно настроить параметры в файле CppProperties.json, находящемся в корневом каталоге проекта. Иногда требуется создать файл указаний, чтобы помочь IntelliSense понять определения макросов. Интегрированная среда разработки Visual Studio помогает найти и исправить проблемы с функцией IntelliSense.

IntelliSense для одного файла

Когда вы открываете файл, который не включен в проект, Visual Studio предоставляет определенную поддержку IntelliSense, но по умолчанию ошибки не подчеркиваются волнистой линией. Если на панели навигации указано Прочие файлы, это может быть причиной того, что ошибочный код не подчеркивается волнистой линией или не определен макрос препроцессора.

Проверка списка ошибок

Если файл не открыт в режиме одного файла и функция IntelliSense работает неправильно, сначала нужно проверить окно «Список ошибок». Чтобы увидеть все ошибки IntelliSense в текущем исходном файле вместе со всеми включенными файлами заголовков, выберите в раскрывающемся списке Сборка и IntelliSense:

VC++ IntelliSense in Error List

В IntelliSense отображается не более 1000 ошибок. Если файлы заголовков, включенные в исходный файл, содержат более 1000 ошибок, в самом начале исходного файла отображается только один маркер ошибки в виде волнистой линии.

Проверка правильности путей #include

Проекты MSBuild

Если вы запускаете сборку проектов вне интегрированной среды разработки Visual Studio и сборка выполняется успешно, но IntelliSense работает неправильно, возможно, среда командной строки не согласована с параметрами проекта для одной или нескольких конфигураций. Щелкните правой кнопкой мыши узел проекта в обозревателе решений и убедитесь, что все пути #include правильно указаны для текущей конфигурации и платформы. Если для всех конфигураций и платформ используются одинаковые пути, выберите Все конфигурации и Все платформы, а затем проверьте правильность путей.

VC++ Include Directories

Чтобы просмотреть текущие значения макросов сборки, например VC_IncludePath, выберите строку «Включаемые каталоги» и щелкните раскрывающийся список справа. Затем нажмите » и нажмите кнопку «Макросы «.

Проекты, использующие файл makefile

Для проектов Makefile, которые основаны на шаблоне проектов NMake, выберите на левой панели NMake, а затем Путь поиска включаемых файлов в категории IntelliSense:

Makefile project include paths

Проекты в виде папок

При работе с проектами CMake убедитесь, что пути #include в файле CMakeLists.txt указаны правильно для всех конфигураций. Для других типов проектов возможно, потребуется использовать файл CppProperties.json. Дополнительные сведения см. в статье о настройке IntelliSense с помощью файла CppProperties.json. Убедитесь, что пути указаны правильно для всех конфигураций, определенных в этом файле.

Если в файле CppProperties.json есть синтаксическая ошибка, функция IntelliSense для затронутых файлов будет работать неправильно. В окне вывода Visual Studio будет отображаться ошибка.

Ошибки анализа тегов

Анализатор тегов — это анализатор кода C++ с нечеткой логикой, который используется для просмотра и навигации. Он работает очень быстро, но не пытается полностью интерпретировать каждую конструкции кода.

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

Есть два типичных проявления этой проблемы в Visual Studio:

  1. Если на панели навигации отображается корневой макрос, значит, текущее определение функции пропущено: Tag parser skips function definition
  2. Интегрированная среда разработки предлагает создать определение для функции, которая уже определена: Tag parser offers to define existing function

Чтобы устранить подобные проблемы, создайте файл с именем cpp.hint в корневом каталоге решения. Дополнительные сведения см. в статье Файлы подсказок.

Ошибки анализатора тегов отображаются в окне Список ошибок.

Проверка параметров проекта с помощью журнала ведения диагностики

Чтобы проверка, использует ли компилятор IntelliSense правильные параметры компилятора, включая путь и макросы препроцессора, включите ведение журнала диагностики IntelliSense в текстовом редакторе > инструментов >> C/C++ > Advanced > Diagnostic Log. Установите следующие значения параметров: Включить ведение журнала — True, Уровень ведения журналов — 5 (самый подробный) и Фильтр ведения журналов — 8 (журнал IntelliSense).

В окне вывода теперь будут показаны командные строки, которые передаются в компилятор IntelliSense. Пример выходных данных:

[IntelliSense] Configuration Name: Debug|Win32 [IntelliSense] Toolset IntelliSense Identifier: [IntelliSense] command line options: /c /I. /IC:\Repo\Includes /DWIN32 /DDEBUG /D_DEBUG /Zc:wchar_t- /Zc:forScope /Yustdafx.h 

Возможно, эти сведения помогут определить, почему IntelliSense выдает неточную информацию. Например, если включаемая папка вашего проекта содержит строку $(MyVariable)\Include, а в журнале диагностики в качестве включенного пути отображается /I\Include, значит, переменная $(MyVariable) не была вычислена и была удалена из окончательного включаемого пути.

Компиляция IntelliSense

Visual Studio использует выделенный компилятор C++ для создания и обслуживания базы данных, используемой для всех функций IntelliSense. Чтобы синхронизировать базу данных IntelliSense с кодом, после определенных изменений в параметрах проекта или в исходных файлах Visual Studio автоматически запускает в фоновом режиме задачи компиляции только для IntelliSense.

Но иногда Visual Studio может не обновлять базу данных IntelliSense своевременно. Например, после выполнения команды git pull или git checkout Visual Studio может потребоваться вплоть до часа для того, чтобы обнаружить изменения в файлах. Вы можете принудительно запустить повторное сканирование всех файлов решения. Для этого щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите Повторить сканирование решения.

Устранение ошибок компиляции IntelliSense

При компиляции IntelliSense не создаются двоичные файлы, но она также может завершиться с ошибкой. Одна из возможных причин ошибки — использование пользовательских файлов с расширениями .props или .targets. В Visual Studio 2017 версии 15.6 и более поздней ошибки сборки только для IntelliSense отображаются в окне вывода. Чтобы их увидеть, в раскрывающемся списке Показать выходные данные из выберите Решение:

Output window for solution errors

Сообщение об ошибке может содержать указание включить трассировку во время разработки:

error: Designtime build failed for project 'E:\src\MyProject\MyProject.vcxproj', configuration 'Debug|x64'. IntelliSense might be unavailable. Set environment variable TRACEDESIGNTIME=true and restart Visual Studio to investigate. 

Если присвоить переменной среды TRACEDESIGNTIME значение true и перезапустить Visual Studio, вы найдете в каталоге %TEMP% файл журнала, который может помочь при диагностике ошибки компиляции.

Дополнительные сведения о переменной среды TRACEDESIGNTIME см. в статьях о Roslyn и общей системе проектов. Сведения в этих статьях относятся и к проектам C++.

Связанный контент

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *