makefile使用

黑马linux编程学习笔记
makefile

  • 文件命名:

    全部小写makefile或者首字母大写,其余字母小写Makefile

  • makefile规则的三要素:

    目标、依赖、命令

    在这里插入图片描述

makefile的三个自动变量~只能出现在规则的命令中

$< :规则中的第一个依赖

$@:规则中的目标

$^:规则 中的所有依赖

  • makefile默认的编译参数,makefile文件中可以修改

    AR 库文件维护程序的名称。默认值为ar

    AS 汇编程序的名称,默认值为as

    CC C编译器的名称,默认为cc

    CPP C预编译器的名称,默认值为$(CC) -E

    CXX C++编译器的名称,默认值为g++

    FC FORTRAN编译器的名称,默认值为f77

    ARFLAGS 库文件维护的程序选项,无默认值

    ASFLAGS 汇编程序的选项,无默认值

    CFLAGS C编译器的选项,无默认值

    CPPFLAGS C预编译的选项,无默认值

    CXXFLAGS C++编译器的选项,无默认值

    FFLAGS FORTRAN编译器的选项,无默认值

    AR 函数库打包程序,可创建静态库.a文档。默认是"ar"。
    AS 汇编程序。默认是"as"。
    CC C编译程序。默认是"cc"。
    CXX C++编译程序。默认是"g++"。
    CPP C/C++预处理器。默认是"$(CC) -E"。
    FC Fortran编译器。默认是"f77"。
    PC Pascal语言编译器。默认是"pc"。
    YACC Yacc文法分析器。默认是"yacc"。

    ARFLAGS 函数库打包程序的命令行参数。默认值是"rv"。
    ASFLAGS 汇编程序的命令行参数。
    CFLAGS C编译程序的命令行参数。
    CXXFLAGS C++编译程序的命令行参数。
    CPPFLAGS C/C++预处理器的命令行参数。
    FFLAGS Fortran编译器的命令行参数。
    PFLAGS Pascal编译器的命令行参数。
    YFLAGS Yacc文法分析器的命令行参数。
    LDFLAGS 链接器的命令行参数。

  • 样例脚本

    #obj=main.o add.o sub.o mul.o
    target=app
    
    #查看当前目录下的.c文件赋值给变量src
    src=$(wildcard ./*.c)
    
    # 把变量src中的.c 替换成.o
    obj=$(patsubst ./%.c, ./%.o, $(src))
    #CC=gcc
    #CPPFLAGS= -I
    $(target):$(obj)
            $(CC) $(obj) -I./include -o $(target)
    %.o:%.c
            $(CC) -c -I./include $< -o $@
    
    #声明clean为伪目标
    .PHONY:clean
    clean:
            #-rm 
            #前面加- 这条命令失败了,继续执行后续命令
            #前面没- 这条命令失败后,后续命令也不会执行
            rm $(obj) $(target)  -f
    
    #这种可以测试默认的参数
    hello:
            echo $(CC) $(CPPFLAGS)                                 
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值