`

Makefile简单介绍

阅读更多
http://os.51cto.com/art/200806/75991.htm


关于命令行:
一个规则可以有多个命令行,每条命令占一行。
每条命令行必须以[Tab]字符开始,以此告诉make此行是一个命令行。
这也是书写Makefile中容易产生,而且比较隐蔽的错误。


关于注释:
注释行的结尾如果存在反斜线(\),那么下一行也被作为注释行。
反斜线之后不能有空格。

---------------------------------------

伪目标all:
all并不是Makefile要求必须的,但大家默认它为Makefile的入口,是所有目标的目标。

但当all不是第一个Target时,也失去作为入口的功能。
Makefile只会找第一个Target,剩下的Target如果没有引用关系是不会调用的。

---------------------------------------

伪目标clean:
不成文的规矩是,clean从来都是放在文件的最后。
因为Makefile中的第一个目标会被作为其默认目标。
Target将会查看当前目录下的文件是否比依赖新,
clean :
[Tab]  rm *.o
如果目录下有clean文件的话,此Target将失效,因为make认为它是一个文件。
故可以使用.PHONY关键字

.PHONY clean
clean :
[Tab]  rm *.o

声明它只是一个伪目标,而不是文件。


---------------------------------------
伪目标.SUFFIXES:
这个伪目标是定义后缀名列表,也就是我们自己定义类型,使该类型如何编译。

.SUFFIXES: .d



Makefile的命令
-n     展开编译的命令        
-c    不链接,只生成对象    
-g    编译时,输出调试信息  
-S    生成汇编文件          
-C    预处理阶段不删除注释  
-E    生成预处理阶段的文件  
-I    使include "file"生效,也就是告知自定义的头文件位置
-L    记录为连接库的目录    


Makefile中常见预定义变量:
命 令 格 式 含    义
AR 库文件维护程序的名称,默认值为ar
AS 汇编程序的名称,默认值为as
CC C编译器的名称,默认值为cc
CPP C预编译器的名称,默认值为$(CC) –E
CXX C++编译器的名称,默认值为g++
FC FORTRAN编译器的名称,默认值为f77
RM 文件删除程序的名称,默认值为rm –f
ARFLAGS 库文件维护程序的选项,无默认值
ASFLAGS 汇编程序的选项,无默认值
CFLAGS C编译器的选项,无默认值
CPPFLAGS C预编译的选项,无默认值
CXXFLAGS C++编译器的选项,无默认值
FFLAGS FORTRAN编译器的选项,无默认值
LDFLAGS 传给链接程序(ld)的标志,无默认值


Makefile中常见自动变量:
命令格式含    义
$* 不包含扩展名的目标文件名称
$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件
$< 第一个依赖文件的名称
$? 所有时间戳比目标文件晚的依赖文件,并以空格分开
$@ 目标文件的完整名称
$^ 所有不重复的依赖文件,以空格分开
$% 如果目标是归档成员,则该变量表示目标的归档成员名称


---------------------------------------

Makefile的结构:
  • 目标体(target)
  •   命令(command)
  • 依赖体(dependency)

target : prerequisites ...
[Tab]   command
[Tab]   command
          ...

分享到:
评论

相关推荐

    makefile详细介绍(中文)

    《makefile详细介绍(中文)》 在编程世界中,`makefile`是一个至关重要的工具,它使得自动化构建、编译和测试项目变得简单而高效。本文档将详细讲解`makefile`的各个方面,帮助读者深入理解和掌握这个强大的构建系统...

    makefile介绍Makefile的知识

    Makefile 介绍和应用 Makefile 是一个文本文件,它告诉 make 命令如何编译和链接程序。Makefile 的书写规则是指 Makefile 文件的编写格式和语法规则。 Makefile 的规则 ---------------- Makefile 的规则是指 ...

    简单易懂的makefile教程

    这篇文章将对makefile的基本概念、编写方法以及它在程序编译和链接中的作用进行介绍。 首先,makefile定义了一系列的规则来指定编译过程中哪些文件需要先编译,哪些需要后编译,以及哪些需要重新编译。这不仅极大地...

    Makefile手册_中文版.pdf

    手册随后介绍了Makefile文件的基本结构和Makefile处理过程,包括了规则的格式、一个简单的Makefile文件示例、变量的使用等。其中,让make推断命令是一种高级技术,可以简化Makefile文件的编写。 在编写Makefile文件...

    makefile详解介绍

    ### Makefile详解介绍 #### 一、Makefile概览及重要性 Makefile是一种用于自动化构建过程的脚本文件,在Linux/Unix系统中尤为重要。它不仅简化了项目的编译流程,还能有效地管理复杂的工程项目,提高开发效率。...

    VCS利用makefile仿真详细介绍

    本篇将详细介绍如何利用Makefile在VCS环境中进行仿真,以及在`module_tb.v`测试基准中的关键设置。 首先,`VCS`不仅支持Verilog,还支持SystemVerilog扩展,它允许用户进行高层次的验证和复杂的并发行为建模。`...

    makefile说明文章-详细介绍了makefile的用法

    一个简单的Makefile示例: ```makefile target: dependency1 dependency2 command1 command2 ``` ### 2. 规则(Rule) 规则描述了如何从依赖文件创建目标。上面的格式就是一条规则,冒号后面跟着目标,然后是一...

    makefile v3.8中文手册

    第二章介绍GNU make,包括Makefile的简介、规则介绍、简单的示例、make的工作原理、变量的指定、自动推导规则和另类风格的makefile等。这一章节旨在为读者提供Makefile的基本编写和理解框架。 第三章总述了Makefile...

    Makefile自动构建方法

    本文档将详细介绍如何使用Makefile进行自动构建,并通过一个简单的“Hello World”示例来展示整个流程。此方法特别适合于复杂的多级Makefile构建环境。 #### 二、基础知识简介 1. **Makefile**:一种脚本文件,...

    Makefile手册中文版

    第二章“GNUmake介绍”具体介绍了Makefile的基础知识,包括Makefile的简要说明、规则介绍以及一个简单的示例。此外,本章还详细描述了make的工作原理、如何在makefile中指定变量、自动推导规则、另类风格的makefile...

    经典的makefile介绍

    ### 经典的Makefile介绍 #### 概述 Makefile是一种用于自动化构建软件项目的脚本文件,尤其在Unix及类Unix系统中广泛使用。它能够有效地管理项目的编译过程,通过定义一系列规则来确定哪些文件需要编译、何时需要...

    makefile知识小介绍

    Makefile的核心机制是"自动化编译",它允许开发人员通过一条简单的`make`命令,快速地完成整个项目的构建过程。这极大地提高了工作效率,特别是在处理大量源代码时。 `make`是一个命令工具,用于解析并执行Makefile...

    makefile的制作方法

    下面是一个简单的Makefile示例,用于编译名为`main.c`的源文件: ```makefile all: main main: main.o gcc -o main main.o %.o: %.c gcc -c $$@ ``` 3.3 make是如何工作的 make程序会检查目标文件的修改时间...

    makefile编程(pdf)

    第二章介绍了GNU make的基本概念和用法,包括Makefile的简介、规则介绍、简单的示例、make的工作原理、变量的指定、自动推导规则、以及makefile的不同编写风格。 第三章详细解释了Makefile的总述,阐述了Makefile...

    GNU+makefile中文手册

    第二章介绍了GNU make的概览,包括Makefile的简介、规则的介绍、一个简单的示例以及make的工作原理。此外,还介绍了如何通过指定变量以及自动推导规则来使用makefile,并讨论了另类风格的makefile和清除工作目录过程...

    Linux_Makefile实验.pdf

    文档通过一个实验例子逐步介绍了如何构建一个简单的“hello world”程序。实验中,先声明了编译器、编译选项、目标对象文件等变量,然后定义了具体的构建规则,包括如何将.c源文件编译成.o对象文件,如何将对象文件...

    makefile介绍

    ### Makefile介绍与使用详解 #### 一、Makefile概览 Makefile 是一种用于自动化构建过程的脚本文件,在软件开发过程中具有重要的作用。它主要用于定义如何编译和链接程序,以及如何处理项目的文件依赖关系。对于...

    跟我一起写Makefile.pdf

    《跟我一起写Makefile》是陈皓大佬撰写的一份PDF文档,主要讲解了如何编写和理解Makefile,...陈皓大佬的这份PDF教程深入浅出地介绍了Makefile的各个方面,对于想要提升构建自动化水平的IT从业者来说是一份宝贵的资源。

    跟我一起写Makefile

    本文档将详细介绍Makefile的基本概念、语法以及高级用法。 #### 第二部分:关于程序的编译和链接 在软件开发中,编译和链接是两个关键步骤。编译是指将源代码转换为机器代码的过程,而链接则是将多个对象文件合并...

Global site tag (gtag.js) - Google Analytics