2013-04-06 4 views
0

상위 레벨이 하나 있습니다 (Makefile). 이 프로젝트는 다양한 깊이의 여러 하위 디렉토리가 있습니다.하위 디렉토리에서 make를 실행하는 방법

서브 디렉토리에서 make을 어떻게 시작할 수 있습니까? git이 최상위 레벨 .git 디렉토리를 자동으로 찾듯이 최상위 레벨 Makefile을 사용합니까?

구조 :

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

시나리오 :

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

내가 처음으로 동일한 작업을 수행 할 수있는 두번째 시나리오를 싶습니다.

힌트, 그것은 이상적으로 vi에서 :make 규칙이 될 것이지만,

업데이트 VI-구체적으로는 안 :은/루트 디렉토리, 프로젝트의 유일한 루트가 아닌, 진짜 의도이다 gim을 모방합니다

+0

방법처럼 보일 것 별칭

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

을 만들'별명은' "/ Makefile을 -f하게"만들 =? – Beta

+0

트릭은 모방입니다 –

+0

@beta /는 루트 디렉토리가 아닙니다. 프로젝트의 루트 인 미안합니다 –

답변

1
#!/bin/bash 

HERE=$PWD 

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

MFILE=$PWD/Makefile 

cd $HERE 
make -f $MFILE 
+0

Makefile이 없으면 무한 루프를 조심하십시오. 당신이 그것을 이끌어 낸 첫 번째 논평을 한 이후로 받아들이십시오. –

+0

@SteveSchnepp : 재밌네, 나는 그걸 생각하고 그걸 잊어 버렸다. 정정했다. – Beta

2

Beta로 동작합니다. makecrawl.sh에 대한

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

+1하지만 무한 루프에주의하십시오. –

+0

@steve schnepp : 경고 해 주셔서 감사합니다. while! [-f Makefile] && [$ PWD! = "/"] –

관련 문제