SublimeLinter clang - не удается найти базовые заголовки

Я недавно установил Sublime Text 3 и пытаюсь заставить SublimeLinter работать на C ++. Я установил линтер «SublimeLinter-contrib-clang» с помощью Package Control, и линтер действительно активируется. Однако моя проблема в том, что линтер выдает ошибку для каждого базового заголовка, то есть #include <iostream> в базовой программе Hello World.

Что я пытался сделать:

  • Установленные библиотеки clang, g ++ и последней версии libstdc
  • Скомпилировал и запустил программу с помощью clang из терминала с clang++ -v <name_of_file>
  • Пытался и не смог вручную включить каталог библиотеки c ++ в настройках

Последний вариант кажется лучшим выбором, но, похоже, я вообще не понимаю, как работают настройки Sublime. Вот мой файл настроек пользователя: (цветовая схема и строки игнорируемых пакетов уже были там)

{
    "color_scheme": "Packages/User/SublimeLinter/Monokai (SL).tmTheme",
    "ignored_packages":
    [
        "Vintage"
    ],
    "SublimeLinter-contrib-clang": {
        "include_dirs": "/usr/include/c++"
    }
}

Я пробовал разные форматы (в «линтерах» -> «лязгать», «лязгать» и т. Д.), Но ни один из них не работает. К тому же я даже не уверен, что этот метод сработает.

Спасибо ~

(Используя Ubuntu 14.04)

Изменить: Мой текущий файл пользовательских настроек:

{
    "color_scheme": "Packages/User/SublimeLinter/Monokai (SL).tmTheme",
    "font_size": 11,
    "ignored_packages":
    [
        "Vintage"
    ],
    "linters": {
        "clang": {
                "extra_flags": [],
                "include_dirs": [
                    "/usr/include/c++/4.8.2"
                ]
            }
    }
}

person Jawad    schedule 26.01.2015    source источник
comment
Заголовки находятся в нескольких местах. Найдите их и добавьте в список. Если вы его не узнали, это файл настроек в формате JSON.   -  person chris    schedule 26.01.2015
comment
@chris Спасибо за ответ, но я немного запутался. Что касается части JSON, я искал правильную компоновку и расположение. Я отредактировал свой пост с помощью текущего файла Preferences.sublime-settings, но, похоже, он ничего не изменил. Что касается местоположения, я проверил, и он включает iostream (для которого линтер все еще выдает ошибку).   -  person Jawad    schedule 26.01.2015


Ответы (2)


Это произошло из-за того, что плагин использовал clang с флагом -cc1, который можно было бы описать как превращение его в внутренний режим, в котором отсутствуют параметры (т.е. настройки местоположения для конкретной платформы).

указано в документы llvm

Проблема была устранена .

person Darklighter    schedule 03.10.2015

IMHO лучше не указывать компилятор include dir, потому что Xcode и clang могут вообще скрыть его где-то в папке / Application / Xcode /.

Я нашел полезным следующее

"SublimeLinter": {
    "linters": {
        "clang": {
            "extra_flags": " -x c++ "
        }
    }
},
person theambient    schedule 24.03.2015