Makefile 簡單例子1
阿新 • • 發佈:2018-09-06
roo makefile 測試 變量 span objects add 測試環境 rwx
測試環境
root@ubuntu16:/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
root@ubuntu16:/home/ubuntu16/code2# gcc main.c add.c add.h sub.c sub.h -o all root@ubuntu16:/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月 504: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 root@ubuntu16:/home/ubuntu16/code2# ./all 12 10
Makefile 1 原始版
root@ubuntu16:/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 root@ubuntu16:/home/ubuntu16/code2# make all cc main.c add.c add.h sub.c sub.h -o all root@ubuntu16:/home/ubuntu16/code2# make clean rm -rf *.o root@ubuntu16:/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 root@ubuntu16:/home/ubuntu16/code2# ./all 12 10
Makefile 2 變量版
root@ubuntu16:/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) root@ubuntu16:/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 root@ubuntu16:/home/ubuntu16/code2# make clean rm -rf main.o add.o sub.o root@ubuntu16:/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 root@ubuntu16:/home/ubuntu16/code2# ./all 12 10
Makefile 3 優化版
root@ubuntu16:/home/ubuntu16/code2# cat makefile objects = main.o add.o sub.o heads = add.h sub.h all : $(objects) $(heads) cc $^ -o $@ %.o : %.c cc -c $^ .PHONY : clean clean : -rm -rf $(objects) root@ubuntu16:/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 root@ubuntu16:/home/ubuntu16/code2# make clean rm -rf main.o add.o sub.o root@ubuntu16:/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 root@ubuntu16:/home/ubuntu16/code2# ./all 12 10
新增文件添加到對應變量即可。
條件
函數
Makefile 簡單例子1