一、Makefile简介:
工程管理器,顾名思义,是指管理较多的文件,Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作,Make将只编译改动的代码文件,而不用完全编译。
Makefile文件一般和项目的其他源文件放在同一个目录下。在机器上可以同时存在许多不同的makefile文件,如果一个大项目,可以用多个不同的makefile文件来分别管理项目的不同部分。
Make命令和makefile文件的结合提供了有一个在项目管理领域十分强大的工具,不仅可以用于控制源代码的编译,而且还可以用于手册也的编写以及将应用程序安装到目标目录。
Makefile是make读入的唯一文件。
二、Makefile编写原则
(1)需要由make工具创建的目标文件(target),通常是目标文件或可执行文件。
(2)创建目标文件所依赖的文件
(3)创建每个目标文件的命令,这一行必须先按tab键开头
例如:有以下文件text.c 编写Makefile
test:test.c
gcc text.c -o test
如果要运行的话,直接在输入make
当有很多文件时:main.c bar.c bar.h foo.c foo.h 编写Makefile
main: mian.c foo.o bar.o
gcc main.c foo.o bar.o
foo.o:foo.c
gcc -c foo.c
bar.o:bar.c
gcc -c bar.o
clean:
rm *.o main
当要改变编译器时,可以设置一个变量,如:
CC=gcc
main: mian.c foo.o bar.o
$(CC) main.c foo.o bar.o
foo.o:foo.c
$(CC) -c foo.c
bar.o:bar.c
$(CC) -c bar.o
clean:
rm *.o main
当有两个主函数时
CC=gcc
all:main_max main_min
main_min:main_min.c foo.o bar.o
$(CC) main_min.c foo.o bar.o -o main_min
main_max: main_max.c foo.o bar.o
$(CC) main_max.c foo.o bar.o -o main_max
foo.o:foo.c
$(CC) -c foo.c
bar.o:bar.c
$(CC) -c bar.o
clean:
rm *.o main_min main_max