MakeFile基础总结
来源:互联网 发布:文华模拟交易软件 编辑:程序博客网 时间:2024/06/06 03:47
MakeFile基础总结
什么是makefile
Makefile是一个工程项目的一种编译规则。在没有IDE的情况下,要编译一个有大规模文件的工程项目,就要书写makefile来指定编译的规则。
Makefile规则
1.定义目标。目标应该在一行的开头定义加个冒号,不能加空格或其他字符,可以是一个文件,也可以为是其他伪目标。
2.依赖。写在目标冒号后面
3.命令:每一行以tab键开头,如用GCC编译一个文件,简单的makefile的命令如下。
Foo: foo.o #foo为可执行文件目标,foo.o为依赖文件
Gcc -o foo.o foo.o #gcc编译
4.定义变量与使用:在一行的开始,变量名+ 等号/冒号等号 + 值,使用时, $(变量名),如:
CC=gcc
$(CC) –o foo.o foo
5.通配符:%,通配一个字符,*,通配任意个字
6.伪目标:如能过编译.c文件生成目标.o文件,再链接生成可执行文件,则清除.o文件可执行以下指令,rm –f *.o,如果可控制这个指令是否执行,则定义一个目标clean:,为了避免这个目标与文件重名,可以指定.PHONY。如
.PHONY:clean
Clean:
Rm -f *.o
变量
Makefile的变量有自动化变量,环境变量,目标变量,模式变量
自动化变量:
$<取出第一个依赖项
$^取出所有的依赖项
$@一个一个将目标变量的值取出
环境变量:类似于全局变量
模式变量:使用至少一个%
函数
调用语法:$(function arguments1, argument2…)
如:bar= $(sort 2 5 23 56 234 64)
常用的函数有subst,字符串处理函数
sort,排序函数
dir,取目录
notdir,取文件
foreach,循环
if,条件
shell,执行shell命令
call,处理多个参数
origin,获取变理的来源
error处理make函数
条件判断
Ifeq(,)
command
Else
command
endif
command
隐含规则
Makefile的隐含规则能自动执行一些命令,如gcc编译,.c.o文件是makefile认识的,因此它能能自动处理这些转
嵌套调用
Make可以嵌套调用,并肯可以往下层make传递参数。如
Start:
Cd $(dir) && $(MAKE)
一个例子
Gcc 编译并链接一个简单的加减乘除的例子:
CC=gcc
SRCS=main.c Add.c\
Sub.c\
Mul.c\
Dev.c
OBJS=$(SRCS:.c=.o)
EXEC=main
Start:$(OBJS)
$(CC) -o $(EXEC) $<
%.o:%.c:
$(CC) –o $@ -c $<
.PHONY:clean
Clean:
Rm –f *.o
- Makefile 基础使用总结
- MakeFile基础总结
- Makefile基础总结
- Makefile基础 -- Unix学习总结之二
- makefile基础
- Makefile 基础
- Makefile基础
- Makefile基础
- makefile基础
- makefile 基础
- makefile 基础
- makefile基础
- Makefile基础
- makefile基础
- Makefile基础
- makefile 基础
- Makefile基础
- makefile基础
- java多线程-专题-聊聊并发(九)Java中的CopyOnWrite容器
- JAVA 中反射方法 reflection method
- hdu 5311 Hidden String(dp+暴力dfs)
- 为什么前置++比后置++的效率高
- 质数算法
- MakeFile基础总结
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
- 获取分辨率 尺寸、样式
- 居中大全
- VC2010用IE调试OCX单步
- Java class对象的详解
- poj-3061-Subsequence 尺取法/双指针法
- 【DP】POJ 2385
- postgresql数据库存储图片文件