从项目的子目录中生成

时间:2013-11-19 05:28:56

标签: unix makefile gnu

有没有办法运行" make"从我的项目的子目录中,在其根目录下有一个makefile?

与git在当前目录中查找.git文件夹的方式相同,如果它不存在,则会检查一个目录等...直到它找到git repo或到达系统根目录,我希望能够向上查找makefile。这可能吗?

一个解决方案是在每个目录中都有一个makefile,它只是在上面的目录中调用make ...但这似乎是一个不必要的文件数量,并且非常容易出错(忘记将它放在目录中,等等...)。另外,我希望能够发送参数来制作(即' make this.file'或' make clean'),我不确定' #39; d可以使用这种方法...

我希望这是在正确的stackexchange站点上。对不起,如果它不是!感谢阅读/回答!

1 个答案:

答案 0 :(得分:2)

有很多方法可以实现这样的东西。以下对我有用:

  • 在项目的 top ,我有文件config.mkMakefile。后者将变量TOP定义为顶级项目目录。
  • 在每个相关的子目录中都有Makefile,其中包含以下指令:

      TOP ?= ../..
    
      include $(TOP)/config.mk
    

这不是一个完美的解决方案,但它允许重复使用make逻辑以及完全和部分重建。