Linux中的嵌套调用Makefile的两种方法简析

       Linux中的Makefile是重要的编译文件,通常待编译文件在同一目录下可以简单的直接利用依赖关系写出Makefile。那么如果要在父目录执行make指令达到在子目录只生成.o文件,而在父目录生成可执行文件,该如何操作呢?

       那么这时就需要进行Makefile嵌套使用了。所以我们第一步就是在子目录和父目录各建一个Makefile文件。我们以以下目录为例。

       csc为父目录,code为子目录。现在两个目录下都有了Makefile,我们开始进行内容的编写。

       我们要达到的目的是将fibo.c和main.c在code目录下生成fibo.o和main.o,在csc目录下生成可执行文件fibo。

       采用自底向上的编写方式,先写code里的Makefile:

       其中-I../include是去include文件夹内寻找.h头文件进行编译,否则会报编译错误。clean的作用是去除.o文件。这样我们code的编写就成功了,我们可以先在code目录下运行一下,检查正确性。

       code目录下运行成功后,我们可以写顶层Makefile了。

       这里注意,千万不要写`include ./code/Makefile`!否则会导致调用不成功。

       这个Makefile本人使用了两种方法进行子目录Makefile调用。

       第一种是`cd code && make`,这是进入子目录并执行make指令。此时子目录已经出现编译好的.o文件了。再`cd ..`,回到本目录(父目录),进行本目录要执行的make操作,即将code目录下的,o文件链接成可执行文件-fibo,且这个可执行文件在csc目录下(父目录)。

       第二种是`$(MAKE) clean -C ./code`。这和第一种方法效果相同,只不过写法不同。这行代码的含义是进入./code目录执行make clean操作。使用第二种方法更简洁,不用手动切换回父目录。

       不过,为了可读性和可维护性,建议使用第一种方法。第二种方法在Makefile较简单时,比较适用。

       希望对正在学习Linux编写Makefile的大家有所帮助。 

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值