2010-03-02 179 views
3

我有低于这个Makefile和它我都包括C代码编译失败

GTK/gtk.h

的WebKit/webkit.h

但是当我尝试使用make命令构建项目我有错误

错误:gtk/gtk.h:没有这样的文件或目录

错误:WebKit的/ webkit.h:如果没有这样的文件或目录

的GTK + -2.0.pc和WebKit ... PC是在usr/lib中/ pkgconfig

make文件:

CC=gcc 
CFLAGS=-g -Wall `pkg-config --cflags gtk+-2.0 webkit-1.0` 
LDFLAGS+=`pkg-config --libs gtk+-2.0 webkit-1.0` 
INCLUDE=/usr/include 
LIB=/usr/lib 
SOURCES=wrapper.c wrapper.h browser.c 
OBJ=browser 

all: $(SOURCES) $(OBJ) 

$(OBJ): $(SOURCES) 
$(CC) $(CFLAGS) $(LDFLAGS) -I $(INCLUDE) -L $(LIB) $(SOURCES) -o $(OBJ) 

clean: 
rm -rf $(OBJ) 
+0

你可以发布正在运行的make的实际输出吗? – jamessan 2010-03-02 21:32:29

+0

您是否安装了'pkg-config'?从shell中输出“pkg-config --cflags gtk + -2.0 webkit-1.0”的输出是什么? – ntd 2010-03-24 14:23:21

回答

1

尝试设置CXXFLAGS以及CFLAGS。

+0

实际上,CXXFLAGS用于C++编译器。也许你的意思是CPPFLAGS? http://stackoverflow.com/questions/495598/difference-between-cppflags-and-cxxflags-in-gnu-make – 2010-03-02 20:24:30

6

反引号不是你在Makefile中运行shell命令的方式。你的CFLAGS和LDFLAGS线或许应该像

CFLAGS=-g -Wall $(shell pkg-config --cflags gtk+-2.0 webkit-1.0) 
LDFLAGS+=$(shell pkg-config --libs gtk+-2.0 webkit-1.0) 
+1

虽然你是正确的,你需要'$(shell ...)'让命令运行Makefile,使用反引号没有任何问题。使用反引号,make会将带反引号的命令行传递给shell,并且shell会在调用编译器之前处理它。 – 2010-03-02 20:27:46

+0

没有变化起来 – user248230 2010-03-02 20:30:14

+0

制造文件中没有错误 错误在系统环境中,所以我可以改变它以让它运行 – user248230 2010-03-02 20:34:55

1

唯一包含您指定的路径是/usr/include,因此它看起来FO rthe文件在:

/usr/include/gtk/gtk.h 
/usr/include/webkit/webkit.h 

除非你有其他路径指定了CPATH或C_INCLUDE_PATH环境变量。

usr/lib/pkgconfig添加为-I路径。

+0

'$(CFLAGS)'包含从pkg-config返回的附加'-I'指令,该指令将指定在哪里查找gtk和webkit标头。 – jamessan 2010-03-02 21:24:52

+0

@jamessan:除非已经有效并且存在文件,否则它会找到它们,因此如果不是永久性解决方案,手动添加它是一项有用的调查。 – Clifford 2010-03-02 22:40:23

1

你确实在/ usr/include目录下有gtk/gtk.h和webkit/webkit.h吗?开发包是否提供了它们?

+0

是的,我有包含目录下的这些文件 – user248230 2010-03-02 21:23:42

+0

拥有/usr/include/gtk/gtk.h和/usr/include/webkit/webkit.h并将\'... \'更改为$(shell .. )你应该没有问题,这个makefile适用于这个改变。 – 2010-03-04 09:52:11