makefile的基本用法

makefile的基本用法

makefile基本规则

Target ... : dependencies ...

    command
    ...

Target: 程序生成的文件,或者要指向的动作,如clean

dependencies:目标文件依赖的文件

command:make执行的动作(以 TAB字符开始!!!)

dependencies 中文件更新时候,执行command

例如:

main:main.o add.o sub.o

    gcc -Wall -g main.o sub.o add.o -o main

伪目标.PHONY

如果当前目录下存在一个和makefile中的Target一样名字的文件的话,make Target就会失效,就需要使用伪目标,显示的指定Target。

定义变量

makefile自动化变量
  • $@:规则的目标文件名
  • @<:规则的第一个依赖文件名
  • $^:规则的所有依赖文件列表

例如:

add.o:add.c add.h

$@ 为 add.o

$< 为 add.c

$^ 为 add.c add.h

自定义变量

var=.......
使用变量 $(var)

当目录下存在多个makefile文件的时候,可以通过-f参数指定需要的makfile文件

例如:

make –f makefile.1 自定义使用的makefile文件

模式匹配

  • 规则 1:%.o:%.c

    gcc -Wall -g -c $< -o $@

  • 规则 2:.c.o

    gcc -Wall -g -c $< -o $@

规则2注意 .c.o之间不能由空格

编译多个可执行文件

makefile 默认生成第一个对象

如果需要生成多个可执行文件的话,则需要把它们放在第一个对象

例如:

.PHONY:clean all

OBJ=test1 test2

all:$(OBJ)

make常用内嵌函数

    • 函数调用

      $(function arguments)

    • $(wildcard 模式)

      当前目录下匹配模式的文件:src = $(wildcard *.c) ,获取所有.c文件

    • $(src :%.c=%.o), 把src的 .c替换为.o

      obj = $(src:%.c=%.o)

    • shell函数 执行shell命令: $(shell ls –d */) -> 获取所有子目录

转载于:https://www.cnblogs.com/chaguang/p/8333891.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值