Включить путь в c_cpp_properties, не работающий в коде VS

#c #visual-studio-code

Вопрос:

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

Моя структура папок такова:

 root |-.vscode |-inc | |-hal | | |-esp32 | | | |-pin.h | | | |-eeprom.h |-src | |-hal | | |-esp32 | | | |-pin.cpp | | | |-eeprom.cpp  

Когда я включаю «pin.h» в «pin.cpp», я получаю ошибку, когда включаю ее напрямую. Мне нужно включить его через:

 #include "./../../../inc/hal/esp32/pin.h"  

В моих c_cpp_properties.файл json:

 { "configurations": [  {  "name": "esp32",  "includePath": [  "${workspaceFolder}/inc/hal/esp32/**",  "${workspaceFolder}/inc/**"  ],  "defines": [],  "macFrameworkPath": [  "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"  ],  "compilerPath": "/Users/user/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc",  "cStandard": "c17",  "cppStandard": "c  98",  "intelliSenseMode": "macos-clang-arm64",  "configurationProvider": "ms-vscode.cmake-tools"  } ], "version": 4  

}

Есть ли еще одна настройка, которую я пропускаю, которая является причиной этого? Насколько я понимаю, я должен быть в состоянии (в лучшем случае) включить «pin.h» напрямую или (в худшем случае) «inc/hal/esp32/pin.h», но ни то, ни другое не работает.

Дополнительная информация:
launch.json:

 {  "version": "0.2.0",  "configurations": [  {  "type": "espidf",  "name": "Launch",  "request": "launch"  }  ] }  

настройки.json:

 {  "cmake.sourceDirectory": "${workspaceFolder}/.",  "C_Cpp.errorSquiggles": "Enabled" }  

tasks.json

 {  "version": "2.0.0",  "tasks": [  {  "type": "cppbuild",  "label": "C/C  : clang   build active file",  "command": "/usr/bin/clang  ",  "args": [  "-fdiagnostics-color=always",  "-g",  "${file}",  "-o",  "${fileDirname}/${fileBasenameNoExtension}"  ],  "options": {  "cwd": "${fileDirname}"  },  "problemMatcher": [  "$gcc"  ],  "group": {  "kind": "build",  "isDefault": true  },  "detail": "compiler: /usr/bin/clang  "  }  ] }  

редактировать:
такс.json:

 {  "version": "2.0.0",  "tasks": [  {  "type": "cppbuild",  "label": "C/C  : clang   build active file",  "command": "/usr/bin/clang  ",  "args": [  "-fdiagnostics-color=always",  "-g",  "${file}",  "-o",  "${fileDirname}/${fileBasenameNoExtension}"  ],  "options": {  "cwd": "${fileDirname}"  },  "problemMatcher": [  "$gcc"  ],  "group": {  "kind": "build",  "isDefault": true  },  "detail": "compiler: /usr/bin/clang  "  }  ] }  

Комментарии:

1. Обратите внимание, что c_cpp_properties.json это только для Intellisense. Он не задает путь включения для построения. Вам нужно задать путь включения для построения в ваших аргументах вашего tasks.json

2. @drescherjm Я тоже это пробовал. Но я не могу заставить его работать. Я создаю файл task.json, который все еще компилируется. Я просмотрел множество сообщений и статей, и ни одна из них не дает решения, которое работает. У вас есть какие-нибудь предложения? У меня есть задачи по умолчанию. файл json, но отредактирует сообщение, чтобы добавить его.

3. При редактировании не был задан путь включения в файле tasks.json. Я ожидал "-IfolderToInclude", добавления к вашим аргументам:

4. Я попробовал это на Windows, и это работает. Почему ваш путь компилятора отличается в c_cpp_properties? Не должно ли это быть clang или установить ваш режим intellisenseMode в gcc-arm64?

5. @boocs Причина, по которой он выглядит иначе, заключается в том, что я использую Mac, и я компилирую для определенного процессора, поэтому я хочу компилироваться с этим компилятором. Но я попытался сделать их обоих одинаковыми (clang ) и все равно не получилось