Makefile隐含规则

两个隐含规则;

  1. 将所有的name.o的依赖自动推导为name.c并使用规则$(CC) -c $(FLAGS) $(CPPFLAGS)得到目标。这个规则中只有-c是隐含规则中有的,后面两个变量是留给用户使用的,如果-c不够用,可以通过设置他们来改变这条隐含规则,有了这条隐含规则,下面的写法是被允许的
    res:main.o fcn.o
    .PHONY:clean
    clean:
        rm *.o
    
  2. name目标依赖于name.o,其生成命令是: $(CC) $(LDFLAGS) name.o $(LOADLIBES) $(LDLIBS)。这个规则对于多个被依赖的目标文件同样有效,例如:
    name : y.o z.o
    

    并且"name.c"、"y.c"和"z.c"都存在,则隐含执行:

    cc -c name.c -o name.o
    cc -c y.c -o y.o
    cc -c z.c -o z.o
    cc name.o y.o z.o -o name
    rm -f name.o
    rm -f y.o
    rm -f z.o
    

    隐含规则变量

    隐含规则中使用了很多变量,我们可以通过设置这些变量来在一定程度上控制隐含规则,我们可以在Makefile的文件中为这些变量重新赋值,也可以在命令行中传入或者在环境变量中写入。我们还可以通过-R来取消我们指定的变量的值对隐含规则的作用
    AR函数库打包程序。默认命令是“ar”。
    AS汇编语言编译程序。默认命令是“as”。
    CCC语言编译程序。默认命令是“cc”。
    CXXC++语言编译程序。默认命令是“g++”。
    CPPC程序的预处理器(输出是标准输出设备)。默认命令是“$(CC) –E”。
    RM删除文件命令。默认命令是“rm –f”。
    ARFLAGS函数库打包程序AR命令的参数。默认值是“rv”。
    ASFLAGS汇编语言编译器参数。(当明显地调用“.s”或“.S”文件时)。
    CFLAGSC语言编译器参数。
    CXXFLAGSC++语言编译器参数。
    CPPFLAGSC预处理器参数。( C 和 Fortran 编译器也会用到)。
    LDFLAGS链接器参数。(如:“ld”)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值