2010-03-02 3 views
3

у меня есть этот Makefile ниже, и в нем мой включает вC сбой компиляции кода

GTK/gtk.h

и

WebKit/webkit.h

, но когда я пытаюсь построить проект, используя команду make. У меня есть ошибки.

ошибка: gtk/gtk.h: Нет такого файла или каталога

ошибка: WebKit/webkit.h: Нет такого файла или каталога

в случае GTK + -2.0.pc и WebKit ... рс в USR/Lib/pkg-config

Марка файла:

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

+0

У вас установлен 'pkg-config'? Каков вывод 'pkg-config -cflags gtk + -2.0 webkit-1.0' из оболочки? – ntd

ответ

1

Попробуйте установить CXXFLAGS в дополнение к CFLAGS.

+0

Собственно, CXXFLAGS предназначен для компилятора C++. Может быть, вы имеете в виду CPPFLAGS? http://stackoverflow.com/questions/495598/difference-between-cppflags-and-cxxflags-in-gnu-make –

6

Backticks - это не то, как вы запускаете команды оболочки в Makefile. Ваши 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, нет ничего плохого в использовании backticks. С backticks make передаст командные строки с обратным ходом в оболочку, и оболочка обработает это до вызова компилятора. –

+0

Внесены изменения – user248230

+0

нет ошибок в make-файле ошибка в системной среде, так что я могу ее изменить, чтобы она запустилась – user248230

1

только включают в себя путь, который вы указали в /usr/include, поэтому он будет выглядеть Ф.О. rthe файлов по адресу:

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

Если у вас есть дополнительные пути указывает в либо из переменных среды CPATH, либо C_INCLUDE_PATH.

Добавить usr/lib/pkgconfig как -I путь.

+0

'$ (CFLAGS)' содержит дополнительные директивы '-I', возвращенные из pkg-config, которые укажут, где найти заголовки gtk и webkit. – jamessan

+0

@jamessan: Если бы это не сработало и файлы присутствовали, они бы нашли их, поэтому добавить их вручную - это полезное исследование, если это не постоянное решение. – Clifford

1

У вас на самом деле есть gtk/gtk.h и webkit/webkit.h в каталоге/usr/include? Являются ли пакеты разработки, обеспечивающие их установку?

+0

Да, у меня есть эти файлы под include dir – user248230

+0

Имея /usr/include/gtk/gtk.h и /usr/include/webkit/webkit.h и изменив \ '... \' на $ (shell .. .) у вас не должно быть проблем, этот make-файл работает с этим изменением. –

Смежные вопросы