【问题标题】:How to make a proper C makefile如何制作正确的 C makefile
【发布时间】:2018-04-27 11:19:25
【问题描述】:

到目前为止我已经学会了这种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? 提前致谢!

【问题讨论】:

  • 我喜欢你引用 /professional/ 这个词的方式。这是一个相当模糊的事情:)。您可以做的一件事是查看gnu.org/software/make/manual/html_node/… 的GNU 文档中的makefile 约定部分。这应该会给你一些想法。
  • @NoufalIbrahim 非常感谢!
  • 请在标题中说明具体问题。这将有助于网站的其他访问者。

标签: c makefile


【解决方案1】:

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

all: finalcode

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

clean:
    rm -f *.o

最后,不要忘记将这些规则设置为“虚假”,因此 make 知道它们实际上并没有创建具有这些名称的文件:

.PHONY: all clean

完成。


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

%.o: %.c
    $(CC) -c -o$@ $(CFLAGS) $(INCLUDES) $<

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2020-01-01
    • 2018-02-20
    • 1970-01-01
    • 2011-12-01
    相关资源
    最近更新 更多