Makefileでは、他のディレクトリにあるすべてのディレクトリのリストを取得する必要があります。
私のMakefile
と同じフォルダ内のすべてのディレクトリのリストを取得するには、次を使用します。
DIRECTORIES = $(wildcard */)
all:
echo $(DIRECTORIES)
これで問題なく動作し、希望のリストが表示されます。ただし、別のディレクトリ内のすべてのディレクトリのリストを使用する場合は、
DIRECTORIES = $(wildcard ../Test/*/)
all:
echo $(DIRECTORIES)
.h
および.cpp
ファイルを含む、そのディレクトリ内のすべてのファイル(パス付き)のリストを取得します。
これが発生する理由と修正方法はありますか?リストを取得する他のソリューションも歓迎します。
sort
およびdir
関数をwildcard
と一緒に使用します。
DIRECTORY = $(sort $(dir $(wildcard ../Test/*/)))
From GNU make manual:
$(dir names ...)namesの各ファイル名のディレクトリ部分を抽出します。ファイル名のディレクトリ部分は、その中の最後のスラッシュまで(およびそれを含む)すべてです。ファイル名にスラッシュが含まれていない場合、ディレクトリ部分は文字列「./」です。
$(sort list)リストの単語を字句順にソートし、重複する単語を削除します。出力は、単一のスペースで区切られた単語のリストです。
この記事の2番目と3番目の方法もご覧ください。 ディレクトリのリストの自動作成
試してください:
$(Shell find <directory> -maxdepth 1 -type d)
これにより、サブディレクトリに移動することなく、指定されたディレクトリ内のディレクトリのリストが表示されます。リストには、リストされるすべてのディレクトリの前に.
および./
が含まれるため、リストをクリーンアップする必要があります。
使用する:
$(wildcard ../Test/*/.)
これは正常に機能します。