Linux makefile改进
来源:互联网 发布:阿里云升级配置后 编辑:程序博客网 时间:2024/05/21 22:34
接着http://blog.csdn.net/a158337/article/details/39084725,继续学习makefile的改进。
改进版本一:使用变量
OBJ=main.o tool1.o tool2.omake:$(OBJ) gcc -o main $(OBJ)main.o:main.c tool1.h tool2.h gcc -c main.ctool1.o:tool1.c tool1.h gcc -c tool1.ctool2.o:tool2.c tool2.h gcc -c tool2.cclean: rm -f main $(OBJ)
1.变量介绍
Makefile里面的变量分为自定义变量,预定义变量,自动变量和环境变量。里面你的OBJ就是自定义变量,预定义变量是通常在Makefile经常出现的变量,其中部分有默认值,在Makefiled里的定义的变量就像C语言里的宏定义,代表了一个文本字符串,在make的时候会自动在引用的位置展开内容,预定义变量定义了常见的编译器,汇编器的名称,及其编
译选项,自定义变量声明时候需要赋初始值,使用的时候用$符号,变量定义的时候一般是 变量名=变量值,变量值不一定是要定义好的,也可以是定义在文件的任何地方,包括后
面用到的,也可以把等号换成“:=”
2.变量使用规则:
1.make 变量,make里面定义的或者是make的环境变量,需要引用 $( 变量)
2.出现在规则命令里面的shell变量,这些变量不属于Makefile而是一个shell变量,引用使用shell的$tmp
3.对于命令行出现的make变量也是使用$( 变量)
改进版本2:自动推导
CC=gccOBJ=main.o tool1.o tool2.omake:$(OBJ) $(CC) -o main $(OBJ)main.o:tool1.h tool2.htool1.o:tool1.htool2.o:tool2.h.PHONY: cleanclean: rm -f main $(OBJ)让make自动推导,make只要看到一个.o文件,就会把对应的.c文件添加到依赖文件里面,并且gcc -c *.c也会被推导出来,所以简化了makefile。
改进版本3:自动变量$^ $< $@的使用
CC=gccOBJ=main.o tool1.o tool2.omain:$(OBJ) $(CC) -o $@ $^main.o:main.c tool1.h tool2.h $(CC) -c $<tool1.o:tool1.c tool1.h $(CC) -c $<tool2.o:tool2.c tool2.h $(CC) -c $<.PHONY:cleanclean: rm -f main $(OBJ)
$^表示依赖中的所有参数, $<表示依赖中的第一个参数,$@表示目标集
0 0
- 【Linux基础】Makefile改进
- Linux makefile改进
- Linux Makefile
- linux makefile
- Linux makefile
- Linux Makefile
- linux Makefile
- linux makefile
- Linux makefile
- Linux MakeFile
- linux makefile
- Linux Makefile
- Linux Makefile
- linux makefile
- Linux -- Makefile
- linux makefile
- linux Makefile
- linux-makefile
- 《数据结构》第一章节绪论 问题回收站
- java system
- Pyhton字典用法
- Error was Port already in use: 40001
- 开始学习golang
- Linux makefile改进
- 嵌入式启动之五:基于S5PV210的UBOOT概述
- Git操作备忘
- 百度影棒usb接口为什么不支持摄像头
- 用JavaScript来包装文本元素节点
- 回溯法实现八皇后问题
- 好用的shell——zsh
- ACM 519. [NOIP2010] 乌龟棋(dp)
- 值得一生去看的演讲