1.Я правильно настраиваю VSCode?
В основном.Тот факт, что вам нужно указывать пути включения дважды (один раз в c_cpp_properties.json
и снова в файле, описывающем вашу сборку), неизбежен.В VSCode система сборки и редактор не понимают друг друга, и оба нуждаются в этой информации.В отличие от Visual Studio (без «кода»), необходимо будет указать пути только один раз;это одно из преимуществ использования «истинной» интегрированной среды разработки.(Но есть и недостатки; я не пытаюсь отговорить вас от использования VSCode.)
Однако я не рекомендую вставлять пути включения непосредственно в tasks.json
.Скорее, обычно имеется отдельная система сборки, которую можно вызывать из командной строки, а затем tasks.json
также вызывает эту команду.
В качестве очень распространенного примера вы можете использовать GNU Make и замените ваш текущий tasks.json
этим (непроверенным!) Makefile:
test-sdl: main2.cpp
g++ -g main2.cpp -ID:\\github\\dependencies\\SDL2-2.0.8\\include -LD:\\github\\dependencies\\SDL2-2.0.8\\lib\\x64 -lSDL2main -lSDL2 -lopengl32 -o test-sdl
Это говорит make
, как собрать test-sdl
из main2.cpp
, а именно, запустив команду g++
, показанную,(Я сознательно держал этот Makefile очень простым, поскольку вопрос не о Makefile; просто имейте в виду, что настоящий Makefile сломает вещи для лучшей организации, и обратная косая черта, вероятно, нуждается в корректировке.)
Inв любом случае ваш tasks.json
упрощается до:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make", // <-- changed
"args": [] // <-- changed
}
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher":"$gcc"
}
Это лучше, потому что у вас нет важной информации о сборке, заблокированной в файле, который понимает только VSCode.
2.Может кто-нибудь объяснить ... includePath и browse?
VSCode имеет две разные системы для понимания кода C ++.Существует более старый «Tag Parser», который использует browse.path
, и более новый «Intellisense», который использует includePath
.На данный момент (2019-08-30, VSCode 1.37.1), насколько я понимаю, в основном все должны использовать более новую систему Intellisense, поскольку она предоставляет более точную информацию и должна быть, по крайней мере, такой же зрелой.Следовательно, вы должны иметь возможность просто игнорировать browse.path
.
Чтобы убедиться, что вы используете Intellisense, а не анализатор тегов, перейдите в Файл → Настройки → Настройки → C / C ++ → ».C_Cpp: Intelli Sense Engine "и убедитесь, что это" Default ", а не" Tag Parser ".Обратите внимание, что этот параметр хранится в settings.json
, а не c_cpp_properties.json
.