makefile的规则

     makefile的规则是make进行处理的依据,它包括了目标文件、依赖文件和它们之间的命令。一般来说,makefile的一个语句就是一个规则,在以前的那个例子中,都显示的指出了makefile的规则关系,如:“$(CC) $(CFLAGS) -c $< -o $@”,但为了简化makefile的书写,makefile包含了隐式规则和模式规则,下面就对这两个规则进行一下阐述:

    1.隐式规则

    隐式规则可以告诉make如何使用传统的方式完成任务,这样呢,当用户使用它们时就不用详细指定它们编译的具体细节,而只需将目标文件列出就好。make会自动搜索隐式规则目录来确定如何生成目标文件。如前面的例子就可以简写如下:

    OBJS = kang.o yul.o

    CC = Gcc

    CFLAGS = -Wall -O -g

    sunq : $(OBJS)

          $(CC) $^ -o $@

    由于隐式规则的缘故,我们故可以省略后两句。在make的隐式规则中指出:所有的.o文件都可以自动由.c文件按照命令"$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c –o file.o"生成。这样“kang.o”和“yul.o”就会分别调用“$(CC) $(CFLAGS) -c kang.c -o kang.o”和“$(CC) $(CFLAGS) -c yul.c -o yul.o”生成,所以在我们看到好多的makefile就会省略掉后面的几句。

注意:

    在隐式规则只能查找到相同文件名的不同后缀名文件,如”kang.o”文件必须由”kang.c”文件生成

下表3.16给出了常见的隐式规则目录:

表3.16                                              Makefile中常见隐式规则目录

对应语言后缀名

规 则

C语言:.c变为.o

$(CC) -c $(CPPFLAGS) $(CFLAGS)

C++语言:.cc或.c变为.o

$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)

Pascal编译:.p变为.o

$(PC)-c $(PFLAGS)

Fortran编译:.r变为-o

$(PC)-c $(FFLAGS)

    2.模式规则

    模式规则是用来定义相同处理规则的多个文件的。不同于隐式规则,隐式规则仅仅能够用make默认的变量进行处理,而模式规则还可以引入用户自定义变量,为多个文件建立相同的规则,从而简化makefile的书写。

    模式规则的格式类似于普通规则,该规则的相关文件必须用“%”注明,使用模式规则修改后的makefile如下:

    CFLAGS = Wall -o -g

    CC = Gcc

    OBJS =kang.o yul.o

    sunq:$(OBJS)

        $(CC) -c $^ -o $@

    %.o:%.c

        $(CC) $(CFLAGS)-c $< -o $@

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值