Makefile 为Gtk制作文件
我有一个make文件,它为所有源文件创建obj文件,然后使用这些obj文件创建可执行文件(基本上是编译每个文件,然后将所有文件链接在一起) gtk+的生成文件为:Makefile 为Gtk制作文件,makefile,gtk,gtk3,Makefile,Gtk,Gtk3,我有一个make文件,它为所有源文件创建obj文件,然后使用这些obj文件创建可执行文件(基本上是编译每个文件,然后将所有文件链接在一起) 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
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 $@
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\u DIR)/main.c
OBJS=$(OBJ_DIR)/main.o
主营:清洁建造
生成:$(OBJS)
$(CC)$(OBJS)-o$(EXE)
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.c
$(CC)$(PACKAGE)$(CFLAGS)$<-o$@
但这不起作用。它给出错误(未定义对“gtk_init”和其他gtk函数的引用)
我应该做什么修改?应该是
LDLIBS = $(shell pkg-config --libs gtk+-3.0)
而不是LIB
使用make-p
检查您的内置规则
再看看。请参阅$(LINK.o)
变量等。CFLAG必须具有-c,或者在编译时必须包含该属性。此外,链接期间必须包含pkg配置
更改后,生成文件变为:
build: $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(EXE) $(LIBS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) ***-c*** -I$(INC_DIR) $< -o $@ $(PACKAGE)
build:$(OBJS)
$(CC)$(CFLAGS)$(OBJS)-o$(EXE)$(LIBS)
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.c
美元(CC)$(CFLAGS)***-c***-I$(公司董事)$<-o$(一揽子)
更改成功运行。但我没有使用LIBAnd
LIB
是内置规则未知的,因此您的LIB
是错误的。我后来发现了这一点,但这里有一个很好的解释。
LDLIBS = $(shell pkg-config --libs gtk+-3.0)
build: $(OBJS)
$(CC) $(CFLAGS) $(OBJS) -o $(EXE) $(LIBS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
$(CC) $(CFLAGS) ***-c*** -I$(INC_DIR) $< -o $@ $(PACKAGE)