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的主要内容,如果未能解决你的问题,请参考以下文章

在android中显示隐藏片段

Makefile 是如何工作的?其中的宏定义分别是啥意思?

Linux编程之Makefile

Makefile

学习Makefile例子

golang goroutine例子[golang并发代码片段]