为Gtk制作文件

时间:2016-01-13 08:49:03

标签: makefile gtk gtk3

我有一个make文件,它为所有源文件创建obj文件,然后使用这些obj文件创建可执行文件(基本上编译每个单独的文件,然后将它们全部链接在一起)。

scanf

我尝试对gtk + 3.0做同样的事情但是没有成功,因为网上的例子总是与示例文件有关,而不是整个项目(包含多个源文件)。例如:

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 $@

为gtk +创建文件是:

$ cc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello

但这不起作用。它给出了错误(对#&gt; gtk_init&#39;以及其他gtk函数的未定义引用) 我应该做些什么修改?

2 个答案:

答案 0 :(得分:1)

应该是

 LDLIBS = $(shell pkg-config --libs gtk+-3.0)

而不是LIB

使用make -p内置规则进行检查。

另见this example。请参阅$(LINK.o)变量等

答案 1 :(得分:1)

CFLAGS 必须包含 -c ,或者在编译时必须包含 CFLAGS 。此外,链接期间必须包含pkg-config。

更改后,make文件变为:

build: $(OBJS)
    $(CC) $(CFLAGS) $(OBJS) -o $(EXE) $(LIBS)

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
    $(CC) $(CFLAGS) ***-c*** -I$(INC_DIR) $< -o $@ $(PACKAGE)

更改成功运行。