gpt4 book ai didi

c - 未找到 flycheck 头文件,但 makefile 是正确的

转载 作者:太空狗 更新时间:2023-10-29 16:12:57 24 4
gpt4 key购买 nike

我正在使用带有 flycheck 的 emacs 来检查 C 源代码语法并尝试让它与 glib 一起工作。我的代码可以正确编译和运行,但是 flycheck 在 #include <glib.h> 中报告找不到文件错误行并停止报告进一步的错误,违背了它的目的。

这是我的示例源文件:

#include <stdio.h>
#include <glib.h>

GList* list = NULL;

int main() {
list = g_list_append(list, "a");
list = g_list_append(list, "b");
list = g_list_append(list, "c");

for ( ; list!=NULL; list=list->next) {
printf("%s\n", (char*)list->data);
}
return 0;
}

和生成文件

P=glist
OBJECTS=
CFLAGS=-g -Wall -O3 `pkg-config --cflags glib-2.0`
LDLIBS=`pkg-config --libs glib-2.0`
CC=gcc-4.9

$(P): $(OBJECTS)

如果我将包含行更改为 #include <glib-2.0/glib.h>我在迷你缓冲区中收到以下错误报告:

Checker c/c++-clang returned non-zero exit code 1, but no errors from output: In file included from /var/folders/f/ts3zs3cjbq1fqfhdfrl1w0000gn/T/flycheck87881gVK/glist.c:2: /usr/local/include/glib-2.0/glib.h:32:10: error: 'glib/galloca.h' file not found with include; use "quotes" instead In file included from /var/folders/_f/ts3_zs3cjbq1fqfhdfrl1w0000gn/T/flycheck87881gVK/glist.c:2: In file included from /usr/local/include/glib-2.0/glib.h:32: /usr/local/include/glib-2.0/glib/galloca.h:34:10: fatal error: 'glib/gtypes.h' file not found

Checker definition probably flawed.

代码仍然可以正确编译和运行。我不确定为什么找不到 glib/gtypes.h因为它存在于包含的目录之一下。 pkg-config --cflags glib-2.0 的输出是:

-I/usr/local/Cellar/glib/2.36.4/include/glib-2.0 -I/usr/local/Cellar/glib/2.36.4/lib/glib-2.0/include -I/usr/local/opt/gettext/include

列表ls /usr/local/Cellar/glib/2.36.4/include/glib-2.0/glib/gtypes.h

/usr/local/Cellar/glib/2.36.4/include/glib-2.0/glib/gtypes.h

并上市ls /usr/local/include/glib-2.0/glib/gtypes.h

/usr/local/include/glib-2.0/glib/gtypes.h

所以文件就在那里。如果 flycheck 是罪魁祸首,我不介意切换到 flymake,但我不确定这是我的设置问题还是 flycheck 本身的问题。再加上 flycheck 配置非常简单,否则效果很好。我使用的是从 elpa 安装的版本 20130904.2245。

最佳答案

Flycheck 不使用 Makefile,也不尝试解析它们。我不禁想知道你是怎么想到这个主意的,因为手册中没有记录这样的行为,甚至不存在 make 文件的语法检查器。

Flycheck 运行 Clang directly .您需要通过相应地设置 flycheck-clang-include-path 显式配置用于语法检查的包含路径。您必须自己这样做,这不是根据您的 Makefile 自动完成的。

您可以通过 file/dir 局部变量设置路径,或编写一些自定义 Emacs Lisp 代码来解析您的 Makefile。

关于c - 未找到 flycheck 头文件,但 makefile 是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com