- 4
- 0
- 约4.42千字
- 约 6页
- 2021-04-12 发布于天津
- 举报
Makefile 实际用例分析(一) 比较通用的一种架构
这里不再说 Makefile 的基本知识, 如果需要学习, 那么
请参考: 下载: makefile
请参考: 下载: makefile
中文手册
或者点击打开链接 或者 跟我一起写 Makefile( 陈皓 )这里说的是一般的实际的一个
工程应该怎么去写。
环境: ubuntu 10.04 先看看我的文件的分布情况:
顶层:然后 src中:是所有的源程序以及头文件
顶层:然后 src
中:是所有的源程序以及头文件
我这里是
使用自己的 IR 树的代码作为实验 )而 build 文件夹是为了 编译使用的! 下面有: obj 文件夹里面放的是编译过程中的 .o
和 .d 文件,还有一个 subdir.mk 的子文件,
用于指示怎么生成 .o
obj中:下面我们从顶层开始慢慢分析:*******
obj
中:下面我们从顶层开始慢慢分析:
******* 温馨提示:下
面的注释是为了方便处理,写在每一条语句后面,其实这样 的风格是不好的,所以,如果
你使用了这个 makefile ,请将注释换行 ... 或者去掉,
否则可能编译异常!谢谢记住!
******* 最外层的 makefile :
[plain] view plaincopyprint?SHELL = /bin/sh
# 这个地方是指示使用的 shell 是 sh EXEC = ir_tree # 最终生成的 binary 的名称 BUILD_DIR = build
all:# 这个子文件夹,此处也就是我们 build 文件夹
all:
# all 在此处是终极目标, 这个你应该知道的。 一般我们 make
的时候,第一个目标作为终极目标@( cd${BUILD_DIR}; make
的时候,第一个目标作为终极目标
@( cd
${BUILD_DIR}; make )
# 这句是进去 build 文件夹去执行
那个 makefile
那个 makefile
clean:
# clean 就不说了@echo start clean...@($(RM) $(EXEC))@(cd ${BUILD_DIR}; makeclean)
# clean 就不说了
@echo start clean...
@($(RM) $(EXEC))
@(cd ${BUILD_DIR}; make
clean)
@echo Finished!
@echo
现在进入
build 文件夹,看这个文件夹下面的 makefile
[plain] view plaincopyprint?SHELL = /bin/sh
同上 INCLUDE_DIR :=# include
同上 INCLUDE_DIR :=
# include
文件夹,
般我们在引用库的时候, 需要将其头文件放在一个
include
# 编译中,然后自己的程序 的时候需要包含这个 include ,例如 -I$(lt;span
# 编译
SimHei;gt;INCLUDE_DIRlt;/spangt;lt;span
style=font-family: SimHei;gt;)lt;/spangt;LIBDIR :=-lm
style=font-family: SimHei;gt;)lt;/spangt;
LIB
DIR :=
-lm
# 引入的库 EXEC = ../ir_tree
# 这是一个最终 binary 名称,这里是将这个可执行放在了上
层文件夹中
层文件夹中 -include obj/subdir.mk # 这个地方是
include 了一个子文件 里子文件作用是,为了生成所有的 .o 文件 (当然附带生成 .d
文件! ),生成 .o 之后,才能回到这
# 层的 makefile 进行链接成最终的可执行的操作! 具体操作
我们稍后再看all:${EXEC}#
我们稍后再看
all:${EXEC}
# 好!这里
的生成规则! lt;/spangt;
的生成规
则! lt;/spangt;
${EXEC}: ${OBJS}
是这个 makefile 的第一个目标。即终极目标,所有需要找
lt;span style=font-family: SimHei;gt;${EXEC}
的生成规SimHei;gt;obj/subdir.mk中! lt;/spangt;lt;spanstyle=font-family: SimHei;gt;lt;/spangt; @echo Building target: $@
的生成规
SimHei;gt;obj/subdir.mk
中! lt;/spangt;lt;span
style=font-family: SimHei;gt;
原创力文档

文档评论(0)