-3

到目前为止,我已经学会了这种 makefile :

     finalcode : code.o
          gcc -g -ansi -Wall -pedantic code.o -o finalcode
     code.o : code.c
          gcc -c -ansi -Wall -pedantic code.c -o code.o

我有兴趣学习更好的版本

        all:
        clean:
etc..

我在哪里可以学习如何编写更“专业”的makefile?提前致谢!

4

1 回答 1

2

所以你只想要典型的“假”目标?这很简单,制定all第一条规则(因此它是默认规则)并让它取决于您想要构建的任何内容,例如:

all: finalcode

然后,在 中clean,只需编写一个脚本来删除应清理的内容,例如:

clean:
    rm -f *.o

最后,不要忘记让这些规则“假”,所以 make 知道它们实际上并没有创建具有这些名称的文件:

.PHONY: all clean

完毕。


至于“专业”,这是相当主观的,但我会首先为编译器(CC)、标志(CFLAGS)、包含等定义变量并使用它们。如果您对可移植性有所损失感到满意,请使用模式规则,例如创建对象文件,例如

%.o: %.c
    $(CC) -c -o$@ $(CFLAGS) $(INCLUDES) $<
于 2018-04-27T11:22:26.580 回答