Makefile的使用

Makefile产生背景
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

Makefile文件完整过程

  1. 工程中需编译源文件及如何编译
  2. 需创建库文件及如何创建这些库文件
  3. 最后产生我们想要的可执行文件

makefile编写原则

1.似Shell脚本

shell脚本编译基本原则(类同原则)

# 井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了。
${VARIABLE} 基本变量替换。大括号限定变量名的开始和结束
TAB键 使用原则
更多参考原则

2.makefile结构

#  变量定义
VAR=test   定义变量VAR,强制赋值为app  
VAR+=app   在VAR之前定义的值后面再追加app这个值
VAR?=testapp  如果之前VAR没有被定义,则定义并使用testapp;否则使用之前的值,连接作用

3.基本原则

  1. 第一条目标为总的目标,
  2. 依赖可以是文件(目录)或为其他目标
  3. 动作可以是Linux命令,动作的那一行第一个字符必须是以TAB键

样例:

target:   depend1  depend2 depend3 ...
[TAB]  action1  
[TAB ] action2
target1:
[TAB] action1 
[TAB] action2

4.注意点:

makefile可使用名字:makefile(优先级高) Makefile GNUmakefile
运行命令:make+命令行名称
直接运行make 系统会自动寻找Makefile文件
Makefile文件内命令执行存在依赖满足关系

gcc编译命令风格:`编译选项一般置前,链接滞后`
gcc ${APPS} main.c -o ${APPS} ${LDFLAGS}
标志 `CFLAGE  compile options` 编译选项
链接 `LDFLAGE link options`链接选项

Makefile使用

make  找makefile或Makefile文件执行总的目标
make clean 执行makefile文件中的clean目标
make -C directory 进入到directory文件夹中去执行总的目标
make clean -C direcotry  进入到directory文件夹中去执行clean目标
make -f comm_makefile   通过-f选项指定一个makefile文件
make VAR=value  给Makefile传一个参数VAR,其值为value
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值