为Gtk创建文件
我有一个make文件,它为所有源文件创建obj文件,然后使用这些obj文件创建obj文件(基本上编译每个单独的文件,然后将所有这些文件链接在一起)。为Gtk创建文件
CC = gcc
SRC_DIR = src
INC_DIR = inc
OBJ_DIR = obj
CFLAGS = -c -Wall -I$(INC_DIR)
EXE = project
SRCS = $(SRC_DIR)/main.c $(SRC_DIR)/file1.c # and so on...
OBJS = $(OBJ_DIR)/main.o $(OBJ_DIR)/file1.o # and so on...
main : clean build
build: $(OBJS)
$(CC) $(OBJS) -o $(EXE)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) -c $< -o [email protected]
我试图为GTK + 3.0做相同,但都没有成功的网络一直都是相对于示例文件,而不是项目整体上的例子(由多个源文件)。这样一个如:为GTK +
$ cc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
Make文件是:
CC = gcc
SRC_DIR = .
INC_DIR = .
OBJ_DIR = Obj
CFLAGS = -Wall -g -o
PACKAGE = `pkg-config --cflags --libs gtk+-3.0`
LIBS = `pkg-config --libs gtk+-3.0`
EXE = Gui
SRCS = $(SRC_DIR)/main.c
OBJS = $(OBJ_DIR)/main.o
main : clean build
build: $(OBJS)
$(CC) $(OBJS) -o $(EXE)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(PACKAGE) $(CFLAGS) $< -o [email protected]
但是,这是行不通的。它给出错误(未定义的参考'gtk_init'和其他gtk函数) 我应该做什么修改?
的CFLAGS必须-c或在编译时必须包括在内。而且,链接期间必须包含pkg-config。
的变化后,make文件变为:
build: $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(EXE) $(LIBS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) ***-c*** -I$(INC_DIR) $< -o [email protected] $(PACKAGE)
的变化成功运行。
应该
LDLIBS = $(shell pkg-config --libs gtk+-3.0)
,而不是LIB
请与您的make -p
内置的规则。
另请参阅this example。见$(LINK.o)
变量等
但我还没有使用过LIB – madD7
并且内建规则未知LIB,所以你的LIB是错误的。 –
我后来发现了这个,但这里有一个非常好的解释。 http://blog.borovsak.si/2009/09/glade3-tutorial-6-signals.html – madD7