我在 Emacs 上使用 Flycheck,并开始学习 GTK。但是,Flycheck 显然不知道这些内容,并在这些#include
内容上给我带来了错误。
我尝试手动将每个内容包含在包含路径选项中,但这太疯狂了——那里有太多东西了!从命令行编译时,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-haskell或者flycheck-dmd-dub扩展,根据底层构建系统分别为 Haskell 和 D 设置 Flycheck 设置。
这是您得到的最佳解决方案,因为缺乏标准化的构建工具,如果不付出巨大努力就无法为 C/C++ 提供更复杂的支持。
免责声明:我是 Flycheck 的维护者。