makefile多文件编译

如果我们有11个文件,由一个main.c文件,5个别的 .c文件, 5个.h文件组成。如何让它们生成可执行文件。

target:main.o 1.o 2.o 3.o 4.o 5.o                 #target是要生成的目标文件,后面main.o是主文                    
                                                   #件,其他是依赖文件。
        gcc -o target main.o 1.o 2.o 3.o 4.o 5.o   #这里是将mian.o文件生成目标文件,后面跟目标    
                                                   #文件。
main.o:main.c main.h 1.h 2.h 3.h 4.h                             #生成mian.o文件
        gcc -c main.c

1.o   : 1.c 1.h
        gcc -c 1.c

2.o   : 2.c 2.h
        gcc -c 2.c

3.o   : 3.c 3.h
        gcc -c 3.c

4.o   : 4.c 4.h
        gcc -c 4.h

5.o   : 5.c
        gcc -c 5.c

clean :                                             #执行 make clean可以清楚生成的所有文件
        rm -f *.o
        rm -f target

在编写makefile之前,我们要搞清楚谁是谁的依赖文件,比如上面的,main的依赖文件是(1-5).c的文件,那么编译时,其后面就要跟上mian所需要的文件。如果编译1.c为1.o文件时,它需要别的文件支持它编译,那么在画面也要跟上它依赖文件。比如:

gcc -c 1.c 2.o 3.o  #后面.o文件是它的依赖文件。

 总结:多文件编译是编译main文件,如果它需要依赖,按照关系,编译时将它们跟在后面,这样在编译是,需要依赖文件,它会在后面寻找。

makefile的隐晦规则:

说白了就是make会一些规则进行推到。具体什么规则,我们可以看看下面例子。

SUORCES += main.o 1.o 2.o 3.o 4.o
target:$(SUORCES)
        gcc -o target $(SUORCES)
main.o:main.h 1.h 2.h 3.h 4.h
1.o:1.h
2.o:2.h
3.o:3.h
4.o:4.h
5.o:

.PHONY:clean
        rm -f $(SUORCES)
        rm -f target

可以定义一个SUORCES将所有同类型的文件加入到里面,如上也是makefile文件所支持的。

只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个1.o,那么1.c,就会是1.o的依赖文件。并且 cc -c 1.c 也会被推导出来,于是,我们的makefile再也不用写得这么复杂。

.PHONY是一个伪目标。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值