在Mac OS 10.9上找不到'glib.h'文件

时间:2014-06-12 21:38:46

标签: macos emacs makefile glib

我正在尝试编译msg2pdf,这是一个将mu4e(mu为Emacs)中的消息转换为pdf的工具。 我收到以下错误:

/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in .
  CC       msg2pdf.o
In file included from msg2pdf.c:20:
In file included from ../../lib/mu-msg.h:24:
../../lib/mu-flags.h:24:10: fatal error: 'glib.h' file not found
#include <glib.h>
         ^
1 error generated.
make[2]: *** [msg2pdf.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

奇怪的是,我检查了Makefile,GLIB_CFLAGS似乎指向正确的文件夹(brew安装它的地方)。 实际上,glib.h位于/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0

GLIB_CFLAGS = -D_REENTRANT -I/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0 -I/usr/local/Cellar/glib/2.40.0_1/lib/glib-2.0/include -I/usr/local/opt/gettext/include 
GLIB_LIBS = -L/usr/local/Cellar/glib/2.40.0_1/lib -L/usr/local/opt/gettext/lib -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl 

如何成功编译文件?有没有命令行&#34; hack&#34;我可以在打电话时使用 使?

修改 以下是目录中的文件 https://github.com/flexdec/temp

编辑2 这是使用make V = 1

时的输出
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in .
gcc -DHAVE_CONFIG_H -I. -I../..  -I../../lib   -DICONDIR='""'  -Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement -g -O2 -MT msg2pdf.o -MD -MP -MF .deps/msg2pdf.Tpo -c -o msg2pdf.o msg2pdf.c
In file included from msg2pdf.c:20:
In file included from ../../lib/mu-msg.h:24:
../../lib/mu-flags.h:24:10: fatal error: 'glib.h' file not found
#include <glib.h>
         ^
1 error generated.
make[2]: *** [msg2pdf.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

编辑3 我现在使用make V=1获得的新错误GLIB_CFLAGS问题是固定的

/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in .
gcc -DHAVE_CONFIG_H -I. -I../..  -I../../lib   -D_REENTRANT -I/usr/local/Cellar/glib/2.40.0_1/include/glib-2.0 -I/usr/local/Cellar/glib/2.40.0_1/lib/glib-2.0/include -I/usr/local/opt/gettext/include  -DICONDIR='""'  -Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement -g -O2 -MT msg2pdf.o -MD -MP -MF .deps/msg2pdf.Tpo -c -o msg2pdf.o msg2pdf.c
msg2pdf.c:24:10: fatal error: 'gtk/gtk.h' file not found
#include <gtk/gtk.h>
         ^
1 error generated.
make[2]: *** [msg2pdf.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

2 个答案:

答案 0 :(得分:1)

make V=1而不是make将告诉您C编译器命令的样子(而不仅仅是&#34; CC msg2pdf.o&#34;) - 检查并确保它包括你需要的旗帜。

根据您对Makefile.am的快速了解,您在AM_CPPFLAGS中包含$(GTK_CFLAGS)和$(WEBKIT_CFLAGS),但不包括$(GLIB_CFLAGS)。

答案 1 :(得分:0)

您需要在要编译它的机器上的mu的顶级目录中运行./configure。 configure将告诉您任何缺少的依赖项。如果不存在依赖项,则跳过可选组件(例如msg2pdf)。

然后,在配置成功后,执行&#39; make&#39;。

在任何情况下,如果configure已成功运行,则顶级&#39; make&#39;也应该成功(这就是我们配置的原因!),否则请提交错误。