linux学习之C语言(5)------ Makefile详解

        对上节简单的例子,通过编写的Makefile,将原来编译时需要4条命令直接减少为一条命令就可以解决,即直接输入make即可,当然了,Makefile的好处并不指的这一点,还有很多好处,下面就对Makefile详细的进行讨论。

      

        Makefile语法规则:

    

              targets : prerequistes

              <TAB>    command

         或:

              targets: prerequistes;command \

              <TAB>    command            
           其中,第一行是依赖关系,第二行是命令,<TAB>代表指的是一个TAB键
               
       eg:
              main:main.o my_fun1.o my_fun2.o
	           gcc -o main main.o my_fun1.o my_fun2.o</span>

                  表示,目标(targets)的依赖对象是main.o,my_fun1.o,my_fun2.o,当依赖的对象在目标修改后修改的话,就要去执行类似第二个行的命令。

      

           Makefile 有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是:$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.如果我们使用上面三个变量,那么我们可以简化
上节的Makefile。

           简化后的Makefile:

main:main.o my_fun1.o my_fun2.o
	gcc -o $@ $^
main.o:main.c my_fun1.h my_fun2.h
	gcc -c $<

my_fun1.o:my_fun1.c my_fun1.h
	gcc -c $<

my_fun2.o:my_fun2.c my_fun2.h
	gcc -c $<
           

         还有一个Makefile的缺省规则,

         

    ..c.o:
         gcc -c $<

      这个规则表示所有的 .o 文件都是依赖与相应的.c 文件的


       这样,Makefile还可以继续简化,

main:main.o my_fun1.o my_fun2.o
	gcc -o $@ $^
..c.o:
	gcc -c $<







            

          


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值