【发布时间】:2016-01-13 19:57:16
【问题描述】:
我有一个 make 文件,它为所有源文件创建 obj 文件,然后使用这些 obj 文件创建可执行文件(基本上编译每个单独的文件,然后将所有文件链接在一起)。
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+3.0 做同样的事情,但没有成功,因为网络上的示例总是针对示例文件而不是整个项目(由多个源文件组成)。例如:
$ cc `pkg-config --cflags --libs gtk+-3.0` hello.c -o hello
gtk+ 的制作文件是:
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 $@
但这不起作用。它给出了错误(对“gtk_init”和其他 gtk 函数的未定义引用) 我应该做哪些修改?
【问题讨论】: