Makefile 简单例子1

测试环境

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月   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
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

   新增文件添加到对应变量即可。


  条件


  函数

猜你喜欢

转载自www.cnblogs.com/dailycode/p/9595650.html