理解GNUMAKE:隐含规则与编译程序

需积分: 50 25 下载量 170 浏览量 更新于2024-08-06 收藏 860KB PDF 举报
"这篇文档是关于`makefile`的详细指南,主要涵盖了`make`工具的隐含规则和使用方法。文档出自`GNUMAKE`中文手册,由Free Software Foundation更新于2002年12月25日。内容包括`Makefile`的基本结构、规则、自动推导、命令、变量、条件判断、函数以及如何运行`make`等。其中,重点讲解了隐含规则,如C、C++、Pascal和Fortran/Ratfor程序的编译规则,并提到了如何通过`-r`或`--no-builtin-rules`选项取消预设的隐含规则。此外,还介绍了如何定义和使用模式规则、后缀规则,以及如何管理函数库文件的成员。" 在`makefile`中,隐含规则是`make`工具预先设定的一系列规则,用于在没有显式定义的情况下自动推导构建过程。例如,`<n>.o`的目标通常依赖于`<n>.c`、`<n>.cc`或`<n>.p`等源文件,并使用特定的编译命令进行构建。对于C程序,`make`会使用`$(CC)`编译器并添加`$(CPPFLAGS)`和`$(CFLAGS)`作为编译选项;对于C++,它将使用`$(CXX)`,同样加上`$(CPPFLAGS)`和`$(CFLAGS)`;Pascal程序则使用`$(PC)`编译器和`$(PFLAGS)`。 文档还提到了`make`的工作方式,包括如何解析`Makefile`,如何根据规则执行命令,以及如何处理命令的错误。变量的使用是`makefile`中的关键部分,包括基础的变量赋值、变量中的变量、追加赋值以及覆盖变量等。此外,`makefile`还可以包含条件判断和函数,以实现更复杂的逻辑和文本操作。 `make`的运行部分讨论了如何指定`Makefile`、目标、检查规则以及各种参数的含义,帮助用户更灵活地控制构建过程。最后,关于隐含规则的深入部分解释了如何利用和自定义隐含规则,以及如何处理函数库文件的更新,这在大型项目中尤其重要,因为它们可以极大地简化构建流程。 这篇文档是学习和编写高效`makefile`的重要参考资料,它提供了全面的指导,帮助开发者更好地理解和利用`make`的隐含规则和高级特性。