我正在为我用 C 编写的 gtk 应用程序编写代码,并且对此有一些疑问。
# Compiler
CC = gcc
CFLAGS = -Wall -g -o
RM = rm -f
# ADDITIONAL HEADER PATH
GTKINC = `pkg-config --cflags gtk+-3.0`
GTKLIB = `pkg-config --libs gtk+-3.0`
INC = $(GTKINC)
LIBLNK = $(GTKLIB)
# SOURCES, OBJECTS, EXECUTABLE
SRCS = hello.c
OBJS = $(SRCS:.c = .o)
EXEC = hello
.PHONY: clean
all: $(EXEC)
@echo compile complete
$(EXEC): $(OBJS)
$(CC) $(INC) $(CFLAGS) $(EXEC) $(OBJS) $(LIBLNK)
clean:
$(RM) *.o *~ $(EXEC)
以前,当我编写 Makefiles 时,我为每个目标文件添加了行
例如
blah blah
a.o: 1.h A.c B.c
$(CC) blah blah
blah blah
然后,我有点懒,试着做一些更容易修改的文件谷歌搜索,最后产品就是上面的代码。1. 这真的和我之前做的一样吗?(就像在例子中一样)我发现代码编译正确,但我不确定它是否检查过时的目标文件。(这是'make' 的全部含义)
2. 你必须在头文件上使用'depend' 来检查过时的源文件吗?3. 有点跑题了,但是 gcc -o hello.o hello.h hello.c 和 gcc -c hello.c 有什么区别?