首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未找到防错头文件,但makefile是正确的

未找到防错头文件,但makefile是正确的
EN

Stack Overflow用户
提问于 2013-09-09 04:07:44
回答 1查看 4.4K关注 0票数 4

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

下面是我的示例源文件:

代码语言:javascript
复制
#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;
}

和makefile

代码语言:javascript
复制
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返回非零退出代码1,但输出中没有错误:在/var/folders/f/ts3zs3cjbq1fqfhdfrl1w0000gn/T/flycheck87881gVK/glist.c:2: /usr/local/include/glib-2.0/glib.h:32:10: error:'glib/galloca.h‘文件中未找到包含;在/usr/local/include/glib-2.0/glib.h:32所包含的文件中使用“/var/folders/_f/ts3_zs3cjbq1fqfhdfrl1w0000gn/T/flycheck87881gVK/glist.c:2:”中的“引号”:/usr/local/include/glib-2.0/glib/galloca.h:34:10:致命错误:‘glib/gypes.h’文件找不到 检查器的定义可能有缺陷。

不过,代码仍然正确编译和运行。我不知道为什么它不能找到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/gypes.h

所以文件就在那儿。我不介意切换到飞制,如果是飞检查是罪魁祸首,但我不确定这是一个问题,我的设置或飞行检查本身。另外,防错的配置非常简单,而且在其他方面工作得很好。我使用的是从elpa安装的20130904.2245版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-09 11:00:41

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

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18691338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档