2015-05-20 54 views
-1

运行的Makefile我有项目的文件夹结构,看起来像这样:从不同的目录

-->projects 
    -->proj1 
     --Makefile 
    -->proj2 
     --Makefile 
    -->proj3 
     --Makefile 
    ... 

我怎样才能用命令运行这些多个生成文件:

make --makefile proj*/Makefile all 

如果我试试这个,当前工作目录是“项目”。如何在呼叫“全部”之前更改此设置。我有一个依赖关系来构建“全部”(以及其他许多地方),它们已经需要正确的工作目录,所以我不想过多地更改Makefile。

谢谢

+0

是否要在'projects /'中运行所有三个makefile,或者每个都在自己的目录中运行? – Beta

+0

每个都在它自己的目录中。我的问题是,如果我在“项目”文件夹中运行代码行,这将成为cwd。并且Makefiles被写入使用他们位置的cwd – Zdovc

回答

0

从技术上讲,在不同的目录中运行make,你可以用--directory=目录做到这一点。请参阅make man page

你在这里描述的问题似乎是recursive make的问题。有些人认为这很糟糕(谷歌“递归被认为是有害的”)。


我要补充一点,如果你现在写这个项目,我不会make直接进入,但也有一些higher-level build system

+0

我尝试了“make --directory = proj * all”并且它没有工作。还是你的意思是别的? – Zdovc

+0

查看recursive make的更新,我认为这是对您的问题的更好描述。 –

+0

我读过关于递归make,我不认为这就是我想要做的(尽管类似的问题出现在那里)。 我没有一个项目与子文件夹。我真的会有很多不同的项目,我想通过shell命令一步完成编译。
感谢您使用高级构建系统的提示 – Zdovc