
Я использую Flycheck на своем Emacs и начинаю изучать GTK. Однако Flycheck, очевидно, не знает об этом и выдает мне ошибки в этих #include
s.
Я пробовал вручную включать каждую из вещей в опции 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.