2

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

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

1 ответ1

2

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

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

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

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

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

Отказ от ответственности: я сопровождающий Flycheck.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .