介绍
使用linux gcc编译程序时,需要输入很多命令及参数,很复杂,容易出错,并且会浪费很多时间。Makefile应运而生,使用Makefile来管理整个软件工程的编译流程,在实际软件工程中,通过make一条指令就可以完成整个软件工程的编译。
解析
Makefile:
all:
gcc -o a.out hello_world_main.c
clean:
-@rm a.out
- all和clean表示目标,目标下面的内容是执行的指令,如 “gcc -o a.out hello_world_main.c”和“-@rm a.out”,指令以table头,可以有多行
- #开头的行是注释
- 第一个目标是默认目标,如all.
- 默认目标直接使用make即可完成编译,其它目标需要显示指明,比如clean目标,需要使用make clean
- Makefile文件名不区分大小写,一般使用首字母大写的形式
- Makefile可以管理复杂的编译过程,如多种条件、多个目录及文件等
编译及运行
编译:
$ make
gcc -o a.out hello_world_main.c
运行:
$ ./a.out
hello world
删除编译文件:
$ make clean
源码工程
目录结构:
.
├── hello_world_main.c
└── Makefile
hello_world_main.c:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello world\n");
return 0;
}
Makefile:
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello world\n");
return 0;
}