Makefile 入门与假目标
来源:互联网 发布:centos ubuntu 区别 编辑:程序博客网 时间:2024/05/16 05:57
在嵌入式的开发中,我们经常使用了Makefile文件来编译与管理软件,本文主要介绍Makefile的入门。
1. 简单的Makefile使用。
假设我们有两个文件foo.c 和main.c ,分别如下:
/*************************************************************************> File Name: main.c> Created Time: 2013年09月17日 星期二 10时08分42秒 ************************************************************************/#include<stdio.h>#include "foo.h"int main(){foo();return 0;}
/*************************************************************************> File Name: foo.c> Created Time: 2013年09月17日 星期二 10时07分51秒 ************************************************************************/#include<stdio.h>void foo(){printf("This is foo()!\n");}
/*************************************************************************> File Name: foo.h> Created Time: 2013年09月17日 星期二 10时09分43秒 ************************************************************************/#include<stdio.h>void foo();
那么如何利用Makefile编译该文件呢,首先我们编写Makefile,详细如下:
all: main.o foo.ogcc -o all main.o foo.omain.o: main.cgcc -o main.o -c main.cfoo.o: foo.c foo.hgcc -o foo.o -c foo.cclean: rm all foo.o main.o
此时你只要在文件的同一目录下执行 make 就可以生存目标文件 all,make clean时会删除目标文件和中间文件。即 rm all foo.o main.o
2. 假如此时与Makefile同目录下有一个clean的文件或者是目录,如果你执行make clean ,此时你会发现每一次执行都会提示说
make: “clean”是最新的。
是不是没有办法解决这个问题呢?
答案是否定的。
在Makefile,你会发现它是多么的聪明,它提供了一个假目标的方式,让我们解决了上述的问题。
此时Makefile 文件修改如下:
.PHONY:cleanall: main.o foo.ogcc -o all main.o foo.omain.o: main.cgcc -o main.o -c main.cfoo.o: foo.c foo.hgcc -o foo.o -c foo.cclean: rm all foo.o main.o
此时你make clean 你会发现 make clean可以起作用了。
3. 适当的利用 “变量”提高可维护性。
.PHONY:cleanCC = gccRM = rmEXE = allOBJS = main.o foo.o$(EXE): $(OBJS)$(CC) -o $(EXE) $(OBJS)main.o: main.c$(CC) -o main.o -c main.cfoo.o: foo.c foo.h$(CC) -o foo.o -c foo.cclean: $(RM) -rf $(EXE) $(OBJS)
- Makefile 入门与假目标
- GCC与Makefile入门
- makefile简介与入门
- makefile中目标all与phony用法
- Makefile 入门与基本语法
- makefile入门与基本语法
- Makefile目标重载
- Makefile中的伪目标
- Makefile中的PHONY 目标
- Makefile中的伪目标
- Makefile的特殊目标
- Makefile中的伪目标
- Makefile伪目标详解
- makefile自动目标变量
- (makefile).PHONY 伪目标
- makefile .PHONY 伪目标
- Makefile 目标 双冒号
- 标准的Makefile目标
- Android APP 手工签数字证书
- IPv6单播地址分配指南
- Asp.Net Deploy Strategy (Entry Level )
- javascript小技巧
- 十进制转二进制的神奇代码
- Makefile 入门与假目标
- 9月17日阿里巴巴面试总结与感悟
- [ObjC]objective c判断中英文混合的字符长度的两种方法
- runOnUiThread(runnable)的用法
- struts2.0之校验器
- 数组排序
- Flex 日期组件多种用法
- Libvirt编译安装
- Linux目录结构