makefile简单使用

本文介绍Makefile的基础概念及其在工程管理中的应用,包括文件格式、命令选项、预定义变量及常用函数,例如模式替换和文件匹配函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 简介
    makefile是工程管理器,可以管理较多的文件,也是一个自动编译管理器,可以减少编译的工作量。通过读取makefile文件来实现。
    makefile文件有自己的一套编写规则,详细编写方法见《GNU make中文手册》。
    makefile格式:
    target : dependency_files
    <TAB>command
    碰到TAB make才认为是命令
    例子:
    hello.o : hello.c hello.h
              gcc -c hello.c -o hello.o
  2. 变量定义和替换
    定义:VAR = var
    引用:$(VAR)
    全文件有效
  3. 自动变量
    $< 第一个依赖文件
    $^ 所有依赖文件
    $@ 目标文件
    本条规则内替换有效
  4. make命令选项
    -C <目录> 读入指令目录下的Makefile文件
    -f <makefile> 读入当前目录下的指定的Makefile文件
  5. 预定义变量
    CC 编译器的名称,默认为cc
    RM 文件删除程序的名称,默认为rm -f
  6. make的函数
    patsubst
    模式替换函数
    格式:$(patsubst PATTERN,REPLACEMENT,TEXT)
    功能:搜索“TEXT”中以空格分开的单词,将否符合模式“TATTERN”替换为“REPLACEMENT” 。参数“PATTERN”中可以使用模式通配符“%”来代表一个单词中的若干字符。如果参数“REPLACEMENT”中也包含一个“%” ,那么“REPLACEMENT”中的“%”将是“TATTERN”中的那个“%”所代表的字符串。在“TATTERN”和“REPLACEMENT”中,只有第一个“%”被作为模式字符来处理,后续的作为字符本上来处理。在两个参数中当使用第一个“%”本是字符本身时,可使用反斜杠“\”对它进行转义处理(转义处理的机制和使用静态模式的转义一致)。
    函数说明:参数“TEXT”单词之间的多个空格在处理时被合并为一个空格,但前导和结尾空格忽略。
    返回值:替换后的新字符串。
    示例:
    $(patsubst %.c,%.o,x.c.c bar.c)
    把字串“x.c.c bar.c”中以.c 结尾的单词替换成以.o 结尾的字符。函数的返回结果是“x.c.o bar.o”

    wildcard获取匹配模式文件名函数
    格式:$(wildcard PATTERN)
    功能:列出当前目录下所有符合模式“PATTERN”格式的文件名。
    返回值:空格分割的、存在当前目录下的所有符合模式“PATTERN”的文件名。
    函数说明:“PATTERN”使用shell可识别的通配符,包括“?”(单字符)、“*”(多字符)等。
    示例:
     $(wildcard *.c)
     返回值为当前目录下所有.c 源文件列表。
  7. 其他
    echo 命令回显
    通常,make 在执行命令行之前会把要执行的命令行进行输出。我们称之为“回显”,就好像我们输入命令执行一样。
    如果要执行的命令行以字符“@”开始,则 make在执行时这个命令就不会被回显。典型的用法是我们在使用“echo”命令输出一些信息时。如:
     @echo 开始编译XXX模块......
    当 make执行时,将输出“开始编译 XXX 模块......”这个信息。如果在命令行之前没有字符“@”,那么,make的输出就是:
     echo编译XXX模块......
     编译XXX模块......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值