没有问题。我想编译bar.c与对象文件foo。O到可执行的条。我在Makefile中有这个:
bar: foo.o
cc bar.c foo.o -o bar
我运行$ make -n
得到:
cc -c -o foo.o foo.c
cc bar.c foo.o -o bar
我正在看输出cc -c -o foo.o foo.c
的第一行。我没有写一个显式的规则将foo.c编译为foo.o。make
是否在看到时隐式地执行此操作?o目标?
是的,GNU make有一个内置规则目录:
编译C程序
o由n.c自动生成,格式为' $(CC) $(CPPFLAGS) $(CFLAGS) -c ' .
链接单个对象文件
n是通过C编译器通过运行链接器(通常称为ld)从n.o自动生成的。使用的精确配方是' $(CC) $(LDFLAGS) n.o $(LOADLIBES) $(LDLIBS) '。
所以你可以直接写:
bar: bar.o foo.o