这里还是以一个简单的“hello,world”程序为例,来诠释一下我所体会到的Makefile的强大之初。
现在来看一下我对这个简单程序所创建的文件夹和总控Makefile文件:
lanpeng@lanpeng-laptop:~/hello$ ls -l 总用量 24 |
lanpeng@lanpeng-laptop:~/hello$ vim config.mk
|
lanpeng@lanpeng-laptop:~/hello$ vim Makefile
|
下面来看看各个子目录下的文件:
(1)main目录
lanpeng@lanpeng-laptop:~/hello/main$ ls
main.c Makefile
lanpeng@lanpeng-laptop:~/hello/main$ vim main.c
|
lanpeng@lanpeng-laptop:~/hello/main$ vim Makefile
|
(2)hello目录
lanpeng@lanpeng-laptop:~/hello/hello$ ls
hello.c world.c Makefile
lanpeng@lanpeng-laptop:~/hello/hello$ vim hello.c
|
lanpeng@lanpeng-laptop:~/hello/hello$ vim world.c
|
lanpeng@lanpeng-laptop:~/hello/hello$ vim Makefile
|
(3)bye目录下
lanpeng@lanpeng-laptop:~/hello/bye$ ls
bye.c Makefile
lanpeng@lanpeng-laptop:~/hello/bye$ vim bye.c
|
lanpeng@lanpeng-laptop:~/hello/bye$ vim makefile
|
(4)include 目录下:
lanpeng@lanpeng-laptop:~/hello/include$ ls
hello.h
|
这样就通过了总控Makefile去控制各个目录下的子Makefile来完成对程序的编译。
lanpeng@lanpeng-laptop:~/hello$ make
make -C main/
make[1]: 正在进入目录 `/home/lanpeng/hello/main'
gcc -Wall -O2 -g -I/home/lanpeng/hello/include -c -o main.o main.c
make[1]:正在离开目录 `/home/lanpeng/hello/main'
make -C hello/
make[1]: 正在进入目录 `/home/lanpeng/hello/hello'
gcc -Wall -O2 -g -I/home/lanpeng/hello/include -c -o hello.o hello.c
gcc -Wall -O2 -g -I/home/lanpeng/hello/include -c -o world.o world.c
make[1]:正在离开目录 `/home/lanpeng/hello/hello'
make -C bye/
make[1]: 正在进入目录 `/home/lanpeng/hello/bye'
gcc -Wall -O2 -g -I/home/lanpeng/hello/include -c -o bye.o bye.c
make[1]:正在离开目录 `/home/lanpeng/hello/bye'
gcc -Wall -O2 -g -I/home/lanpeng/hello/include -o myhello main/main.o hello/hello.o hello/world.o bye/bye.o
lanpeng@lanpeng-laptop:~/hello$ ./myhello
hello,world!
bye bye!
lanpeng@lanpeng-laptop:~/hello$ make clean
make -C main/ clean
make[1]: 正在进入目录 `/home/lanpeng/hello/main'
rm -rf *.o
make[1]:正在离开目录 `/home/lanpeng/hello/main'
make -C hello/ clean
make[1]: 正在进入目录 `/home/lanpeng/hello/hello'
rm -fr *.o
make[1]:正在离开目录 `/home/lanpeng/hello/hello'
make -C bye/ clean
make[1]: 正在进入目录 `/home/lanpeng/hello/bye'
rm -fr *.o
make[1]:正在离开目录 `/home/lanpeng/hello/bye'
rm -rf myhello
Makefile is very good!!