C++/G++, включая заголовки из другой папки

Мне дали проект C++ (для школы), который мне нужно запустить и добавить дополнительный код. Я хотел бы запустить проект в Visual Studio Code. Я скачал расширение C/C++, а также расширение Code Runner. Когда я пытаюсь запустить файл main.cpp, я получаю следующую ошибку:

Файл ANTLRInputStream.h находится в другой папке src, расположенной в папке времени выполнения. Я могу просто изменить включение на что-то вроде этого:

#include "../runtime/src/ANTLRInputStream.h" 

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

У меня есть следующий файл свойств:

{
"configurations": [
    {
        "name": "MinGW",
        "compilerPath": "C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gcc.exe",
        "includePath": [
            "${workspaceFolder}/**",
            "runtime/src"
        ],
        "defines": [
            "_DEBUG",
            "UNICODE",
            "_UNICODE"
        ],
        "intelliSenseMode": "gcc-x64"
    }
],
"version": 4
}

Где я попробовал несколько вариантов, таких как:

  • выполнения / SRC
  • ${RootFolder}/ **
  • ${RootFolder}/ выполнения / SRC

И некоторые из них похожи, но они не работают, и я не знаю, должны ли они работать (поскольку я не знаю, как настроить проекты C++ в VSCode). Как мне сделать так, чтобы все мои включения работали и могли запускать программу, не меняя каждое включение вручную, чтобы найти его местоположение?

1 ответ

На скриншоте показано сообщение об ошибке:

main.cpp:2:10: fatal error: ANTLRInputStream.h: No such file or directory

Эта ошибка исходит от компилятора, g++, а не Visual Studio Code. VSCode просто показывает вывод компилятора в собственном окне вывода.

Чтобы исправить это, вы должны указать компилятору, где искать файл, используя -I вариант, например:

g++ -I../runtime/src main.cpp -o main

В includePath атрибут в c_cpp_properties.jsonиспользуется, чтобы сообщить VSCode (в отличие от компилятора), где найти файлы заголовков. Этот мой ответ говорит оincludePath Подробнее.

Оказывается (из CMakeLists.txt файл в корневой папке, чтобы ваш проект был задуман как проект CMake. Вы можете найти информацию о расширении CMake для VSC здесь.

Другие вопросы по тегам