Makefile学习

分享一下学习笔记
makefile编写规则:
(1)需要由makefile工具创建的目标体(target),通常是目标文件 可执行文件 一个标签
(2)要创建的目标体所依赖的文件(dependency_file)
(3)创建每个目标体时需要的运行命令(command):每条command前要用tab字符
target : dependency_file
command
列如:有hello.c hello.h希望创建hello.o执行命令为:gcc -c hello.c -o hello.o
对应的makefile:
hello.o:hello.c hello.h
gcc -c hello.c -o hello,o
后运行make target
ps:每个makefile文件结尾要有clean:rm 。。。。。
makefile变量
代替文本字符串
方式:
(1)递归展开方式 定义格式:VAR=var
(2)简单扩展方式 定义格式:VAR: =var
make中的变量使用均使用格式为:$(VAR)
变量分为
用户自定义变量,预定义变量(包含常见编译器,汇编器的名称及其编译选项) ,自动变量,环境变量

常见预定义变量
AR
库文件维护程序的名称,默认值为ar
AS
汇编程序的名称,默认值为as
CC
C编译器的名称,默认值是cc, 所以要“CC=gcc”列出来
CPP
C预编译器的名称,默认值是$(CC)-E
CXX
C++编译器的名称。默认值是g++
FC
FORTRAN编译器的名称。默认值是f77
 RM 文件删除程序的名称 默认值为rm -f
ARFLAGS
库文件维护程序的选项,无默认值
ASFLAGS
汇编程序的选项,无默认值
CFLAGS
c编译器程序选项,无默认值 一般CFLAGS = -Wall -O -g
CPPFLAGS
c预编译器选项,无默认值
CXXFLAGS
C++编译器选项无默认值
FFLAGS

makefile常见的自动变量
命令格式
含义
命令格式
含义
$*
不包含扩展名的目标文件名称
$+
所有的依赖文件,以空格分开并已出现的先后为序,
可能包含重复的依赖文件
$<
第一个依赖的文件名称
$?
所有时间戳比目标文件晚的依赖文件 并以空格分开
$@
目标文件的完整名称
$^
所有不重复的依赖文件,以空格分开
$%
如果目标是归档成员,则该变量
表示目标的归档成员名称







makefile规则
隐式规则:不必详细制定编译具体细节,只需要把目标文件列出来即可
如:
target:dependency_file

C编译:所有的 .o 都可由 .c 文件使用命令 $(CC)$(CPPFLAGS)$(CFLAGS) -c file.c -o file,o

c++编译:.cc或.C变为.o

模式规则
仅仅能够用makefile的默认变量来进行操作


make的使用
make的命令
命令格式
含义
命令格式
含义
-C dir 读入指定目录dir下的makefile
-f file
读入当前目录下的file文件作为makefile
-i
忽略所以命令执行错误
-I dir
指定被包含的makefile所在的目录dir
-n
只打印执行的命令,但不执行这些命令
-p
显示make变量数据库和隐含规则
-s
在执行命令时不显示命令
-w
如果make在执行过程中改变目录 打印当前目录名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值