2013-04-06 50 views
0

我有一個頂級Makefile。該項目有幾個不同深度的子目錄。如何從子目錄發起製作

如何從任何子目錄啓動make,因此它使用頂級Makefile,就像git自動找到它的頂級.git目錄?

結構:

/ 
/a/ 
/b/c 
/Makefile 
/Readme 

場景:

/$ make 
... Works ... 
/b$ make 
... Cannot find makefile 

我想第二個場景一樣做第一個。

提示,它會非常充當vi:make規則,但不應該是VI-具體

更新說明:/不是根目錄,只有項目的根本,真正的意圖是模仿git

+0

怎麼樣'別名使= 「讓-f/Makefile文件」'? – Beta 2013-04-06 00:44:54

+0

技巧是模仿git – 2013-04-06 00:45:03

+0

@beta /不是根目錄,只有項目的根目錄,對不起 – 2013-04-06 00:46:11

回答

1
#!/bin/bash 

HERE=$PWD 

while ! [ -f Makefile ] && [ $PWD != "/" ] 
do 
cd .. 
done 

MFILE=$PWD/Makefile 

cd $HERE 
make -f $MFILE 
+0

如果找不到Makefile,請注意無限循環。接受它,因爲你提出了第一個意見。 – 2013-04-06 13:25:16

+0

@SteveSchnepp:好笑,我想到了那個,然後忘了把它放進去。更正了。 – Beta 2013-04-06 13:36:10

2

通過Beta的提示將工作。 創建別名

alias make=`sh /home/makecrawl.sh` 

其中makecrawl.sh會是什麼樣子

#! /bin/bash 
while ! [ -f makefile ] && [$PWD != "/" ] 
do 
cd .. 
done 
make 
+1

+1,但要小心無限循環 – 2013-04-06 13:26:33

+0

@steve schnepp:感謝您的警告.. while! [-f Makefile] && [$ PWD!=「/」]可以工作 – 2013-04-06 16:56:58