我有这样的源代码树。
├── Makefile
└── src
├── bar.c
└── foo.c
我知道我可以使用
编译src中的所有源代码src/%.o: src/%.c
gcc -c -o $@ $<
但我已经尝试了这个并得到了这个结果..
SRCS = $(wildcard ./src/*.c)
OBJS = $(patsubst %.c, %.o, $(SRCS))
all: $(OBJS) main
main:
gcc $(OBJS) -o main
$(OBJS): $(SRCS)
gcc -c -o $@ $<
并得到这个结果。
gcc -c -o foo.o ./src/foo.c
gcc -c -o bar.o ./src/foo.c
为什么选择gcc -c -o bar.o ./src/foo.c? 即使它具有与
相同的格式src/%.o: src/%.c
gcc -c -o $@ $<