Makefile 简单例子1
Posted dailycode
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Makefile 简单例子1相关的知识,希望对你有一定的参考价值。
测试环境
[email protected]:/home/ubuntu16/code2# ll 总用量 32 drwxr-xr-x 2 root root 4096 9月 5 23:44 ./ drwxr-xr-x 7 ubuntu16 ubuntu16 4096 9月 5 23:44 ../ -rw-r--r-- 1 root root 68 9月 5 04:41 add.c -rw-r--r-- 1 root root 70 9月 5 04:51 add.h -rw-r--r-- 1 root root 152 9月 5 04:59 main.c -rw-r--r-- 1 root root 120 9月 5 23:28 makefile -rw-r--r-- 1 root root 68 9月 5 04:47 sub.c -rw-r--r-- 1 root root 70 9月 5 04:52 sub.h
gcc
[email protected]:/home/ubuntu16/code2# gcc main.c add.c add.h sub.c sub.h -o all [email protected]:/home/ubuntu16/code2# ll 总用量 44 drwxr-xr-x 2 root root 4096 9月 5 23:45 ./ drwxr-xr-x 7 ubuntu16 ubuntu16 4096 9月 5 23:44 ../ -rw-r--r-- 1 root root 68 9月 5 04:41 add.c -rw-r--r-- 1 root root 70 9月 5 04:51 add.h -rwxr-xr-x 1 root root 8720 9月 5 23:45 all* -rw-r--r-- 1 root root 152 9月 5 04:59 main.c -rw-r--r-- 1 root root 120 9月 5 23:28 makefile -rw-r--r-- 1 root root 68 9月 5 04:47 sub.c -rw-r--r-- 1 root root 70 9月 5 04:52 sub.h [email protected]:/home/ubuntu16/code2# ./all 12 10
Makefile 1 原始版
[email protected]:/home/ubuntu16/code2# cat makefile all : main.c add.c add.h sub.c sub.h cc main.c add.c add.h sub.c sub.h -o all .PHONY : clean clean : rm -rf *.o [email protected]:/home/ubuntu16/code2# make all cc main.c add.c add.h sub.c sub.h -o all [email protected]:/home/ubuntu16/code2# make clean rm -rf *.o [email protected]:/home/ubuntu16/code2# ll 总用量 3156 drwxr-xr-x 2 root root 4096 9月 5 23:47 ./ drwxr-xr-x 7 ubuntu16 ubuntu16 4096 9月 5 23:44 ../ -rw-r--r-- 1 root root 68 9月 5 04:41 add.c -rw-r--r-- 1 root root 70 9月 5 04:51 add.h -rwxr-xr-x 1 root root 8720 9月 5 23:47 all* -rw-r--r-- 1 root root 152 9月 5 04:59 main.c -rw-r--r-- 1 root root 127 9月 5 23:47 makefile -rw-r--r-- 1 root root 68 9月 5 04:47 sub.c -rw-r--r-- 1 root root 70 9月 5 04:52 sub.h [email protected]:/home/ubuntu16/code2# ./all 12 10
Makefile 2 变量版
[email protected]:/home/ubuntu16/code2# cat makefile objects = main.o add.o sub.o heads = add.h sub.h all : $(objects) $(heads) cc $(objects) $(heads) -o all add.o : add.c cc -c add.c sub.o : sub.c cc -c sub.c main.o : main.c cc -c main.c .PHONY : clean clean : -rm -rf $(objects) [email protected]:/home/ubuntu16/code2# make all cc -c main.c cc -c add.c cc -c sub.c cc main.o add.o sub.o add.h sub.h -o all [email protected]:/home/ubuntu16/code2# make clean rm -rf main.o add.o sub.o [email protected]:/home/ubuntu16/code2# ll 总用量 44 drwxr-xr-x 2 root root 4096 9月 5 23:54 ./ drwxr-xr-x 7 ubuntu16 ubuntu16 4096 9月 5 23:44 ../ -rw-r--r-- 1 root root 68 9月 5 04:41 add.c -rw-r--r-- 1 root root 70 9月 5 04:51 add.h -rwxr-xr-x 1 root root 8720 9月 5 23:53 all* -rw-r--r-- 1 root root 152 9月 5 04:59 main.c -rw-r--r-- 1 root root 238 9月 5 23:53 makefile -rw-r--r-- 1 root root 68 9月 5 04:47 sub.c -rw-r--r-- 1 root root 70 9月 5 04:52 sub.h [email protected]:/home/ubuntu16/code2# ./all 12 10
Makefile 3 优化版
[email protected]:/home/ubuntu16/code2# cat makefile objects = main.o add.o sub.o heads = add.h sub.h all : $(objects) $(heads) cc $^ -o [email protected] %.o : %.c cc -c $^ .PHONY : clean clean : -rm -rf $(objects) [email protected]:/home/ubuntu16/code2# make all cc -c main.c cc -c add.c cc -c sub.c cc main.o add.o sub.o add.h sub.h -o all [email protected]:/home/ubuntu16/code2# make clean rm -rf main.o add.o sub.o [email protected]:/home/ubuntu16/code2# ll 总用量 44 drwxr-xr-x 2 root root 4096 9月 6 00:02 ./ drwxr-xr-x 7 ubuntu16 ubuntu16 4096 9月 5 23:44 ../ -rw-r--r-- 1 root root 68 9月 5 04:41 add.c -rw-r--r-- 1 root root 70 9月 5 04:51 add.h -rwxr-xr-x 1 root root 8720 9月 6 00:02 all* -rw-r--r-- 1 root root 152 9月 5 04:59 main.c -rw-r--r-- 1 root root 154 9月 6 00:02 makefile -rw-r--r-- 1 root root 68 9月 5 04:47 sub.c -rw-r--r-- 1 root root 70 9月 5 04:52 sub.h [email protected]:/home/ubuntu16/code2# ./all 12 10
新增文件添加到对应变量即可。
条件
函数
以上是关于Makefile 简单例子1的主要内容,如果未能解决你的问题,请参考以下文章