makefile的编写
来源:互联网 发布:汽车模拟拆装软件 编辑:程序博客网 时间:2024/05/21 10:32
makefile 描述了整个工程的编译,链接过程。我们知道生成可执行文件的过程为 源文件--->.o文件-->可执行文件。源文件可能有多个文件,对应生成多个对象文件(。o文件),要生成可执行文件需要将这些对象文件进行链接。以下为一个makefile文件:
hello: main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
main.o : main.c
gcc –c main.c
func1.o : func1.c
gcc –c func1.c
func2.o : func2.c
gcc –c func2.c
.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
makefile的规制为:
targets:prerequisites
command
目标:依赖
命令
第一行和第二行的代码对应生成 最终目标hello,怎么生成hello呢,对应的依赖为几个目标文件main.o,func1.o,func2.o。使用的命令为gcc main.o func1.o func2.o -o hello
注意,命令这行需要以“TAB”键开始,即前面的空白不是按空格键形成的。后面几行代码对应生成。o文件的代码。
Makefile中把那些没有任何依赖只有执行动作的目标称为“伪目标”(phony targets)。
.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
“.PHONY” 将“clean”目标声明为伪目标
写完makefile后使用make命令即可完成编译和链接工作。make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make –f 文件名
当执行上面的makefile程序时我们发现目标文件。o并没有被删除掉,为什么呢?因为直接使用make命令只生成了第一个目标,而伪目标clean并没有执行。只要执行make clean 命令就能执行makefile的clean目标。
思考:如果要为hello目标添加一个依赖,如:func3.o,该如何修改?
答案1:
hello: main.o func1.o func2.o func3.o
gcc main.o func1.o func2.o func3.o -o hello
答案2:
obj=main.o func1.o func2.o func3.o
hello: $(obj)
gcc $(obj) -o hello
通过变量的方法来更改相关设定
- Makefile的编写方法
- MakeFile的编写指导
- MakeFile的编写指导
- 编写Makefile的心得
- Makefile的编写
- Makefile文件的编写
- makefile的编写
- 编写vxworks的MakeFile
- Makefile的编写指导
- 编写简单的makefile
- Makefile的编写
- makefile文件的编写
- [转]Makefile的编写
- Makefile的编写
- Makefile的编写
- MakeFile的编写
- Makefile文件的编写
- Makefile的编写详解
- 视频画刷VideoBrush
- 如何成为最好的工程师---吴军讲座学习笔记
- 如何成为“10倍效率”开发者
- 深度比较抽象类和接口
- 微软的BSP 精辟解释
- makefile的编写
- Android手机拔号程序
- warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
- 学习笔记 gvim 按键映射
- Android 中WiFi初始化过程分析
- 2012年,我走在哪里?
- java中的 this、super 和 final
- 大型论坛系统环境搭建(20万日IP负载平衡实战)–Nginx+Apache2+PHP+MySQL
- 实现选项对话框和窗口类中的数据交换