Заставляем Flycheck включать gtk-компоненты

Заставляем Flycheck включать gtk-компоненты

Я использую Flycheck на своем Emacs и начинаю изучать GTK. Однако Flycheck, очевидно, не знает об этом и выдает мне ошибки в этих #includes.

Я пробовал вручную включать каждую из вещей в опции include path, но это просто безумие - их там огромное количество! При компиляции из командной строки pkg-configиспользуется именно по этой причине. Есть ли способ заставить Flycheck сделать что-то подобное? Поскольку он использует gccв качестве проверки синтаксиса, я думаю, это должно быть возможно, я просто не знаю как.

решение1

Нет, на самом деле это невозможно без специального кода Emacs Lisp.

В Flycheck нет встроенного решения этой проблемы, и, скорее всего, его никогда не будет из-за разнообразия инструментов и систем сборки C/C++, которые все используют разные подходы к определению и хранению флагов компилятора.

Следовательно, вам нужно написать собственный код Emacs Lisp для заполнения flycheck-clang-include-pathили flycheck-gcc-include-path(в зависимости от того, какой проверяющий вы используете) тем, что вы получаете из pkg-config. Я не знаю Gtk, поэтому, к сожалению, я не могу помочь вам с тем, как именно должен выглядеть этот код.

Обычно вы пишете функцию, которая вызывает pkg-configи устанавливает переменную, и добавляете эту функцию в c-mode-hook. Взгляните наflycheck-хаскеллилиflycheck-dmd-dubрасширения, которые устанавливают настройки Flycheck для Haskell и D соответственно на основе базовых систем сборки.

Это лучшее решение, которое вы можете получить, поскольку отсутствие стандартизированных инструментов сборки делает невозможным предоставление более сложной поддержки для C/C++ без значительных усилий.

Отказ от ответственности:Я являюсь ответственным за поддержку Flycheck.

Связанный контент