Makefile实际用例分析(一)----比较通用的一种架构.docxVIP

  • 4
  • 0
  • 约4.42千字
  • 约 6页
  • 2021-04-12 发布于天津
  • 举报

Makefile实际用例分析(一)----比较通用的一种架构.docx

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)

1亿VIP精品文档

相关文档