makefile编写(一)基本规则
来源:互联网 发布:马龙丁宁知乎 编辑:程序博客网 时间:2024/05/18 06:42
一、一个简单的例子
创建一个malefile文件如下:
mainapp: main.o 1.o 2.o gcc -o mainapp main.o 1.o 2.o mian.o: main.c a.h gcc -c main.c 1.o: 1.c a.h b.h gcc -c 1.c 2.o: 2.c b.h c.h gcc -c 2.c
mainapp应用程序依赖main.o、1.o、2.o,依次类推main.o依赖main.c、a.h等等。
根据依赖关系进行编译。如果你的makefile的名字不是malefile或者Makefile,就需要加入编译选项-f。如:make -f Makefile1
二、使用makefile宏
同样扩展如上的makefile例子如下:
1 all: mainapp 2 3 CC = gcc 4 5 #DEBUG 6 CFLAGS = -I. -g -Wall -ansi 7 8 #Release 9 #CFLAGS = -I. -O -Wall -ansi 10 11 mainapp: main.o 1.o 2.o 12 $(CC) -o mainapp main.o 1.o 2.o 13 main.o: main.c a.h 14 $(CC) $(CFLAGS) -c main.c 15 1.o: 1.c a.h b.h 16 $(CC) $(CFLAGS) -c 1.c 17 2.o: 2.c b.h c.h 18 $(CC) $(CFLAGS) -c 2.c
这种宏的的处理方式与C语言的类似,当然make命令内部也内置了一些特殊的宏定义,百度一下就可以了。
三、makefile中内嵌shell脚本,编译执行文件到指定目录
还是扩展二的例子如下:
1 all: mainapp 2 3 CC = gcc 4 5 INSTALLDIR = bin 6 7 #DEBUG 8 CFLAGS = -I. -g -Wall -ansi 9 10 #Release 11 #CFLAGS = -I. -O -Wall -ansi 12 13 mainapp: main.o 1.o 2.o 14 $(CC) -o mainapp main.o 1.o 2.o 15 main.o: main.c a.h 16 $(CC) $(CFLAGS) -c main.c 17 1.o: 1.c a.h b.h 18 $(CC) $(CFLAGS) -c 1.c 19 2.o: 2.c b.h c.h 20 $(CC) $(CFLAGS) -c 2.c 21 22 clean: 23 -rm mainapp main.o 1.o 2.o #忽略rm的执行结果 24 install: 25 @if [ -d $(INSTALLDIR) ]; \ 26 then \ 27 cp mainapp $(INSTALLDIR); \ 28 chmod a+x $(INSTALLDIR)/mainapp; \ 29 echo "Installed in $(INSTALLDIR)"; \ 30 else \ 31 echo "the $(INSTALLDIR) doesn't exist, please check!";\ 32 fi
以上分别提供了debug和release版本。内嵌shell脚本中每行结束需要以\结尾,这是要把shell脚本连接成一行。并且需要注意\的格式,之气在vim上编写的时候,由于有几个\没有显示高亮导致载编译的时候无法判断到shell脚本连接为一行,导致程序编译不过,查了好长时间,网上有的说是unix的编码格式问题,但是试了也没用。所以在编写的时候一定要注意。
使用install和clean两个目标,一个用于安装,一个用于删除所有的.o文件。
make -f Makefile3 clean 和 make -f Makefile3 install。
阅读全文
0 0
- makefile编写(一)基本规则
- Makefile编写基本规则
- 从头开始写项目Makefile(一):基本规则
- 从头开始写项目Makefile(一):基本规则
- 从头开始写项目Makefile(一):基本规则
- (一)1.6 JAVA编写的基本规则
- Makefile文件编写规则
- Makefile文件编写规则
- Makefile文件编写规则
- Makefile编写规则
- Makefile 编写规则
- Makefile编写规则
- Makefile通用编写规则
- 编写makefile文件规则
- makefile编写规则
- Makefile编写规则
- makefile 文件编写规则
- makefile 编写规则
- ByteBuffer.mark()方法
- 项目实训-千寻-LBS派单逻辑
- 面试问题什么是异步非阻塞
- Eclipse搭建Scala入门经典程序Helloworld
- 报错方案:You need to use a Theme.AppCompat theme (or descendant) with this activity.
- makefile编写(一)基本规则
- MySQL条件控制(case when...then...else...end) 详细解释
- [ASDFZ-NOIP2016模拟]植树方案
- windows 10 安装xgboost
- 关于在linux上安装tomcat并部署javaweb项目
- ubuntu mysql 5.6版本的删除,安装,中文乱码文件配置
- 编程实现:组合_排列
- codeforces D. An overnight dance in discotheque
- 第四届图灵杯-C.来简单地数个数(费波纳兹,字符串数据处理)