2010-03-02 130 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