Makefile 基础知识
来源:互联网 发布:风云2麒麟臂升阶数据 编辑:程序博客网 时间:2024/06/05 06:51
1.目的:实现自动化编译
2.过程:make命令执行=====》需要一个 Makefile 文件=======》makefile的书写规则
3.实现:编写makefile 文件====》执行make命令======》生成可执行文件
4.makefile详细规则:
4.1基本规则:
target(目标文件): prerequisites(依赖的文件)
command(shell 命令)
实现如下:
#makefile /*文件名*/test:test.o add.o sub.o gcc test.o add.o sub.o -o testadd.o:add.c math.h gcc -c add.c math.h/*命令行前用tab键缩格*/sub.o:sub.c math.h gcc -c sub.c math.htest.o:test.c math.h gcc -c test.c math.h
4.2 文件中clean目标,用于清除编译过程中产生的中间文件,保留源代码。现在将目标clean加入到我们的Makefile中。
实现如下:
clean: @echo "clean project...." /*@符号屏蔽命令的显示,只将命令的执行结果显示到屏幕*/ -rm *.o /*清除所有的.o文件,-符号命令执行成功与否,都继续执行下边的命令*/ @echo "clean complete..."
.PHONY:clean /*伪目标,解决clean 文件存在的情况下不能再次执行clean的问题*/
clean是一个约定俗称的目标,像这样的约定还有。
all:通常为缺省的目标,执行缺省的编译工作。
install:编译后的安装工作,将相应的文件拷贝到合适的位置。
distclean:清除所有编译中生成的文件,只保留源文件。
4.3 make的隐含规
make的隐含规则数据库可以用make-p命令打印
4.4 变量
在Makefile中的定义的变量,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。
#makefileOBJ_FILE=test.o add.o /*声明时需要赋初值*/test: $(OBJ_FILE) /*使用时需要在变量名前加$*/ gcc $(OBJ_FILE) -o test
$@,表示规则中的目标。不需要赋值
$<,表示规则中的第一个条件。不需要赋值
$?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。
$^,表示规则中的所有条件,组成一个列表,以空格分隔。
再次对我们的Makefile加以修改,内容如图所示:
#makefileOBJ _FILE=test.o add.o sub.o test:$(OBJ_FILE)# gcc $(OBJ_FILE) -o test gcc $^ -o $@clean:....
4.5函数的使用
实例
#makefileSRC_FILE=$(wildcard *.c) /*找出当前路径下所有以.c 结尾的文件*/test:$(SRC_FILE) gcc $^ -o $@clean:....
4.6makefile命令选项
make -n 打印要执行的命令,不真正执行。
make -c 切换目录执行makefile
- Makefile 基础知识
- Makefile基础知识
- makefile 基础知识
- Makefile基础知识#
- Makefile基础知识总结
- Makefile的基础知识
- makefile学习总结-----基础知识
- MakeFile基础知识(一)
- MakeFile基础知识(二)
- MakeFile基础知识(三)
- MakeFile基础知识(四)
- MakeFile基础知识(五)
- MakeFile基础知识(六)
- MakeFile基础知识(七)
- MakeFile基础知识(八)
- MakeFile基础知识(九)
- MakeFile基础知识(十)
- MakeFile基础知识(十一)
- 用SQL实现学籍管理系统相关的表操作(转载来的部分已修改)用mysql5.5做的
- uva 674 - Coin Change 动态规划
- 大家好,多多交流
- QtWebKit插件编程
- js 获取各种 宽高
- Makefile 基础知识
- Tomcat发布网站知识集锦
- Android 上面的Linux C程序
- 深入了解makefile
- vs2005 搭建cocos2dx环境初体验
- 论网络管理员对网站安全的措施(php+mysql站)
- 雅虎改LOGO还管用吗?
- 系统集成项目管理之项目变更管理
- 二分查找及其应用