- 浏览: 460406 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (538)
- C/C++ Primer (69)
- Objective-C Primer (102)
- Python Primer (19)
- JavaScript Primer (1)
- Java Primer (37)
- PHP Primer (17)
- 泛 Linux (37)
- Shell Script (21)
- APUE (21)
- UNP__1&2 (19)
- NetWork (7)
- Oracle周边 (38)
- Mysql里边 (6)
- Windows技 (9)
- 简单算法 & 数据结构 (14)
- 设计模式 (6)
- GTK历程 (12)
- 工具使用 (25)
- 杂事 (23)
- 一些概念 (17)
- Web方面 (10)
- myCodeTools (9)
- ^未 竟$ (13)
- 硬件通信 (2)
- Games (1)
最新评论
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的命令
Makefile中常见预定义变量:
Makefile中常见自动变量:
---------------------------------------
Makefile的结构:
target : prerequisites ...
[Tab] command
[Tab] command
...
关于命令行:
一个规则可以有多个命令行,每条命令占一行。
每条命令行必须以[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
...
发表评论
-
float equal
2013-05-23 18:21 820- (BOOL)floatA:(float)f1 equalB ... -
C++序列化
2012-07-12 09:51 595http://hi.baidu.com/ewook/item/ ... -
C++著名内裤
2011-12-02 14:00 8121、C++各大有名库的介绍 ... -
C++写C
2011-09-06 17:23 654在C++中写C,标准头文件写法 #ifndef __AB ... -
errno.h
2011-05-05 14:27 696#define EPERM 1 ... -
__cplusplus
2011-04-21 15:09 739http://www.cnblogs.com/stonecra ... -
Pthread__常用
2011-04-21 11:46 852http://blogold.chinaunix.net/u/ ... -
常用预编译
2011-04-21 10:32 656#if defined(WIN32) || defined ... -
C++__容器
2011-04-18 10:16 558http://apps.hi.baidu.com/share/ ... -
C++模板
2011-03-29 14:27 625内容主要来至《钱能C++程序设计教程》&《C++ Pr ... -
交叉引用、前置声明
2011-03-02 09:40 804有两个类相互引用了,编译器报错。 原因是两个类交叉引用: A ... -
typedef的四个用途和两个陷阱
2010-12-14 12:34 656http://hi.baidu.com/changfeng01 ... -
第五届开源小组招新题目
2010-12-03 21:56 750这是学校的开源小组招新题。 08年时我是第二届的组长,不知不觉 ... -
string const char*
2010-12-02 16:13 777http://topic.csdn.net/u/2008092 ... -
CPP Container
2010-11-10 09:20 730延后整理。。。 -
C语言运算符优先级
2010-11-02 17:45 789优先级 运算符 ... -
point point
2010-11-02 17:23 623http://learn.akae.cn/media/ch23 ... -
位运算
2010-11-01 11:33 782千百年来,位运算始终没出现在我写的代码里,今天终于出现了。 ... -
Unix环境下操作特大文件
2010-11-01 11:03 617http://hi.baidu.com/jiangfeng11 ... -
GCC在C语言中内嵌汇编
2010-10-22 14:48 1368http://hi.baidu.com/liu_bin0101 ...
相关推荐
《makefile详细介绍(中文)》 在编程世界中,`makefile`是一个至关重要的工具,它使得自动化构建、编译和测试项目变得简单而高效。本文档将详细讲解`makefile`的各个方面,帮助读者深入理解和掌握这个强大的构建系统...
Makefile 介绍和应用 Makefile 是一个文本文件,它告诉 make 命令如何编译和链接程序。Makefile 的书写规则是指 Makefile 文件的编写格式和语法规则。 Makefile 的规则 ---------------- Makefile 的规则是指 ...
这篇文章将对makefile的基本概念、编写方法以及它在程序编译和链接中的作用进行介绍。 首先,makefile定义了一系列的规则来指定编译过程中哪些文件需要先编译,哪些需要后编译,以及哪些需要重新编译。这不仅极大地...
手册随后介绍了Makefile文件的基本结构和Makefile处理过程,包括了规则的格式、一个简单的Makefile文件示例、变量的使用等。其中,让make推断命令是一种高级技术,可以简化Makefile文件的编写。 在编写Makefile文件...
### Makefile详解介绍 #### 一、Makefile概览及重要性 Makefile是一种用于自动化构建过程的脚本文件,在Linux/Unix系统中尤为重要。它不仅简化了项目的编译流程,还能有效地管理复杂的工程项目,提高开发效率。...
本篇将详细介绍如何利用Makefile在VCS环境中进行仿真,以及在`module_tb.v`测试基准中的关键设置。 首先,`VCS`不仅支持Verilog,还支持SystemVerilog扩展,它允许用户进行高层次的验证和复杂的并发行为建模。`...
一个简单的Makefile示例: ```makefile target: dependency1 dependency2 command1 command2 ``` ### 2. 规则(Rule) 规则描述了如何从依赖文件创建目标。上面的格式就是一条规则,冒号后面跟着目标,然后是一...
第二章介绍GNU make,包括Makefile的简介、规则介绍、简单的示例、make的工作原理、变量的指定、自动推导规则和另类风格的makefile等。这一章节旨在为读者提供Makefile的基本编写和理解框架。 第三章总述了Makefile...
本文档将详细介绍如何使用Makefile进行自动构建,并通过一个简单的“Hello World”示例来展示整个流程。此方法特别适合于复杂的多级Makefile构建环境。 #### 二、基础知识简介 1. **Makefile**:一种脚本文件,...
第二章“GNUmake介绍”具体介绍了Makefile的基础知识,包括Makefile的简要说明、规则介绍以及一个简单的示例。此外,本章还详细描述了make的工作原理、如何在makefile中指定变量、自动推导规则、另类风格的makefile...
### 经典的Makefile介绍 #### 概述 Makefile是一种用于自动化构建软件项目的脚本文件,尤其在Unix及类Unix系统中广泛使用。它能够有效地管理项目的编译过程,通过定义一系列规则来确定哪些文件需要编译、何时需要...
Makefile的核心机制是"自动化编译",它允许开发人员通过一条简单的`make`命令,快速地完成整个项目的构建过程。这极大地提高了工作效率,特别是在处理大量源代码时。 `make`是一个命令工具,用于解析并执行Makefile...
下面是一个简单的Makefile示例,用于编译名为`main.c`的源文件: ```makefile all: main main: main.o gcc -o main main.o %.o: %.c gcc -c $$@ ``` 3.3 make是如何工作的 make程序会检查目标文件的修改时间...
第二章介绍了GNU make的基本概念和用法,包括Makefile的简介、规则介绍、简单的示例、make的工作原理、变量的指定、自动推导规则、以及makefile的不同编写风格。 第三章详细解释了Makefile的总述,阐述了Makefile...
第二章介绍了GNU make的概览,包括Makefile的简介、规则的介绍、一个简单的示例以及make的工作原理。此外,还介绍了如何通过指定变量以及自动推导规则来使用makefile,并讨论了另类风格的makefile和清除工作目录过程...
文档通过一个实验例子逐步介绍了如何构建一个简单的“hello world”程序。实验中,先声明了编译器、编译选项、目标对象文件等变量,然后定义了具体的构建规则,包括如何将.c源文件编译成.o对象文件,如何将对象文件...
### Makefile介绍与使用详解 #### 一、Makefile概览 Makefile 是一种用于自动化构建过程的脚本文件,在软件开发过程中具有重要的作用。它主要用于定义如何编译和链接程序,以及如何处理项目的文件依赖关系。对于...
《跟我一起写Makefile》是陈皓大佬撰写的一份PDF文档,主要讲解了如何编写和理解Makefile,...陈皓大佬的这份PDF教程深入浅出地介绍了Makefile的各个方面,对于想要提升构建自动化水平的IT从业者来说是一份宝贵的资源。
本文档将详细介绍Makefile的基本概念、语法以及高级用法。 #### 第二部分:关于程序的编译和链接 在软件开发中,编译和链接是两个关键步骤。编译是指将源代码转换为机器代码的过程,而链接则是将多个对象文件合并...