Makefile实例
来源:互联网 发布:linux mv命令覆盖 编辑:程序博客网 时间:2024/05/03 00:52
现在来编写下面目录结构的Makefile:
- 顶层目录的Makefile:
//顶层目录的Makefile应该是把握整个工程的编译路线的。内容如下:CFLAGS=-DDEBUG -Iinclude -I../includeexport CFLAGSall: make -C client make -C server make -C rawlist make -C userlist make -C mydatabase make -C obj.PHONY:cleanclean: rm obj/*.o ./*_app//分析:首先可将Makefile分为变量定义和命令执行两部份;在变量定义中,我们将编译选项CFLAGS这个变量确定,然后用“export CFLAGS”将其导出,以方便我们调用的子目录的Makefile利用。“-DDBUG”是定义宏开关,“-Iinclude”是指定头文件的路径,这个是给顶层的Makefile使用的,“-I../include”同样是定义头文件的路径,但是这是给子目录中的Makefile用的。变量定义部分完成之后就开始写命令执行这一部分了,“all”是没有依赖,所以下面的命令走一次。工作很简单,就是进入各个子目录中将其中的“.c”文件编译成obj目录下的“.o”文件。
- client子目录Makefile:
//client子目录中就只有两个文件:client.c和Makefile../obj/client.o:client.c gcc -c $(CFLAGS) -o $@ $^//$(CFLAGS)这个变量是我们在顶层目录中的Makefile中已经定义过的,并且利用export导出了,而这里的Makefile又是顶层目录的Makefile所调用的,所以我们在这里直接用即可。注意要加“-c”选项,因为这只是“预处理+编译+汇编”阶段,生成的目标是上一级obj目录中的“.o”文件。
- server子目中Makefile:
all:../obj/server.o:server.c gcc -c $(CFLAGS) -o $@ $^
- rawlist子目录Makefile:
../obj/rawlist.o:server.c gcc -c $(CFLAGS) -o $@ $^
- userlist子目录Makefile:
../obj/userlist.o:userlist.c gcc -c $(CFLAGS) -o $@ $^
- mydatabase子目录Makefile:
../obj/mydatabase.o:mydatabase.c gcc -c $(CFLAGS) -o $@ $^
- obj子目录中的Makefile:
all:../client_app ../server_app../client_app:client.o gcc -o $@ $^../server_app:server.o gcc -o $@ $^//obj子目录中的Makefile是用作最后的连接作用,分别在顶层目录中生成client_app和server_app。此时就不必加“-c“选项了。
0 0
- Makefile实例
- Makefile实例
- makefile实例
- makefile实例
- makefile实例
- Makefile实例
- makefile实例
- Makefile实例
- Makefile实例
- makefile实例
- Makefile实例
- makefile实例
- Makefile实例
- 实例--Makefile由浅入深
- makefile实例子
- makefile, 实例详解
- 一个makefile实例
- 简单的Makefile实例
- linux命令之find使用
- eclipse环境安装(为了以后方便记录一下)
- webuploader组件的使用以及文件上传下载后台处理
- maven少包处理
- Chapter 6 CPU Scheduling
- Makefile实例
- 怎么解决java.lang.NoClassDefFoundError错误
- delphi枚举与字符串转换
- 6.1 HTTP首部
- C++Primer第五版 第五章习题答案(1~10)
- Java 排序笔记
- Excel导入导出
- python 中文报错 Non-ASCII character '\xe8' in file
- linux动态共享库的设置--/etc/ld.so.conf和/etc/ld.so.cache