make 命令是解释Makefile的
基本形式:
TARGET... : PREREQUISITES...
COMMAND
目标:依赖
命令
注意:每一个命令行必须以[Tab]
字符开始,[Tab] 字符告诉make此行是一个命令行。make按照命令完成相应的动作。
这也是书写Makefile 中容易产生,而且比较隐蔽的错误。
简单的例子
但需要注意:反斜线之后不能有空格(这也是大
家最容易犯的错误,错误比较隐蔽
注意:就是说所有的命令行必需以[Tab] 字符开始,但并不是
所有的以[Tab] 键出现行都是命令行。但make程序会把出现在第一条规则之后的所有以
[Tab] 字符开始的行都作为命令行来处理。
目标“clean”不是一个文件,它仅仅代表执行一个动作的标识。正常情况下,不
需要执行这个规则所定义的动作。make clean 后会执行clean之后的动作。
因此在执行make时,它所指定的动作不会被执行。除非在执行make时明确地
指定它。而且目标“clean”没有任何依赖文件,它只有一个目的,就是通过这个目标
名来执行它所定义的命令。Makefile 中把那些没有任何依赖只有执行动作的目标称为
“伪目标”(phony targets )。
Makefile中的目标可能会很多,但是第一条规则中的目标将被确立为最终目标。
使用变量:
这样的话一是方便使用,第二点是需要修改的话改一个地方就可以了。
清除规则:
1. 通过“.PHONY ”特殊目标将“clean”目标声明为伪
目标。避免当磁盘上存在一个名为“clean”文件时,目标“clean”所在规则的命令无
法执行。
2. 在命令行之前使用“- ”,意思是忽略命令
“rm”的执行错误(参考 5.4 命令的错误 一节)
hello.c
点击(此处)折叠或打开
- #include<stdio.h>
- #include"test.h"
-
- int main(int argc, char **argv)
- {
- test_hello();
- printf(",world!\n");
- }
点击(此处)折叠或打开
- #include<stdio.h>
-
- void test_hello()
- {
- printf("hello");
- }
点击(此处)折叠或打开
- extern void test_hello()
点击(此处)折叠或打开
- hello:test_hello.o test.h hello.c
- gcc -o hello hello.c test_hello.o
- test_hello.o:test_hello.c
- gcc -c test_hello.c
-
- .PHONY:clean
- clean:
- rm *.o hello