#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 ) и все равно не получилось