makefile 多级目录 嵌套调用 实例

         最近要搞 linux 下 c++ 开发,花了几天时间学习了一下 makefile. 总结了一点自己平时会用的比较多的东西。首先是多目录下嵌套调用 makefile. 我觉得这个很重要。很多时候自己写测试代码或者做一些预研的时候都要用到。

         我这个演示例子采用了一个平时我用的比较多的目录结构,相信大家应该也常会用到与此类似的目录结构。今天写这篇文章希望能对正在查相关资料的同行有所帮助。我保证这篇文章里的所有代码都经过充分测试。

        首先贴目录结构图:

        

        这个目录里面,源文件的目录有两个:分别是 my_str_utils 和 xtests.  my_str_utils 目录里面主要是写了一些函数的声明和实现,头文件都放在 my_str_utils/headers 里面,对应的源文件都放在 my_str_utils/source 里面,。而 xtests 里面放了个 main.cpp 用来测试 my_str_utils 中写的函数。我把目标文件单独放在 xdirObjs 中,这样目录会整洁很多。最后的可执行程序我单独放在了 xdirExecs 中。
        在每个有源文件的目录里都写了一个 Makefile, 用于编译当前目录下的 Makefile. 在 xdirObjs 目录里写了一个 Makefile 用于链接目标文件并生成可执行文件。最后在工程的根目录里写了一个 Makefile 用于发出 make 指令,启动编译过程。


        下面是各个目录中的 Makefile 文件。我就不用太多的文字来描述了。但注释会非常详细。

        首先是项目根目录下的 Makefile 的代码:

.PHONY: all clean

# 可执行文件名, 这个根据具体程序会有变动。
EXEC_FINAL :=  tests.exe
# 子目录可以有多个, 以空格分开即可,这个会根据具体程序有所变动。
# 注意 xdirObjs 目录要和 DIR_OBJS 中定义的一致。
SUBDIRS :=  my_str_utils/source \
		xtests \
		xdirObjs

# 当前目录
DIR_TOP := $(shell pwd)
# 定义变量(有的书上也叫宏),指定 object 文件的文件夹和可执行文件的文件夹。
DIR_OBJS := $(DIR_TOP)/xdirObjs
DIR_EXEC := $(DIR_TOP)/xdirExecs
# 我这里由需要在 DIR_OBJS 目录中放一个 Makefile 文件,所以 DIR_OBJS 目录已经事
# 先创建好,这里就不再创建了。
DIRS := $(DIR_EXEC)

# 定义变量
CC = g++
#
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值