2017-06-30 5 views
0

私はいくつかのサブディレクトリを持つプロジェクトを持っていますが、メインのMakefileはサブディレクトリのいくつかをビルド/クリーンアップできなければなりません - サブディレクトリの正確な名前は変数例:GNU Makeがループのサブディレクトリに入らない

​​3210

ビルドターゲットとして既にディレクトリ名を使用しているので、各サブディレクトリのクリーニングにループを使用したいと考えています。しかし、次のようなエラーが表示されます。

$ make clean 
# ... Clean this directory ... 
cd dir1 && make clean; cd dir2 && make clean; 
make[1]: Entering directory `/home/ex/clean_try/dir1' 
rm -fr *.o 
make[1]: Leaving directory `/home/ex/clean_try/dir1' 
/bin/sh: 1: cd: can't cd to dir2 
make: *** [clean] Error 2 

メインディレクトリからdir2に入ることはできません。

答えて

2

cd dir2は、ちょうどcd dir1を実行したというコンテキストであり、dir2はdir1のサブディレクトリではありません。 :-)

試してみてください。make -C $d clean

HTH

+0

OK、トリックをしました。しかし、どうしたの?「エラーの前にディレクトリ/ home/ex/clean_try/dir1」を残しているのはどうですか?それは難解なことですが、少なくとも... – TKKS

+0

これは正常なmake-within-make動作です。 '--no-print-directory'で抑止できます – Mischa

関連する問題