38

私の Makefile では、他のディレクトリに存在するすべてのディレクトリのリストを取得する必要があります。

私が使用するのと同じフォルダー内のすべてのディレクトリのリストを取得するMakefileには:

DIRECTORIES = $(wildcard */)

all:
    echo $(DIRECTORIES)

これは正常に機能し、目的のリストが表示されます。ただし、別のディレクトリにあるすべてのディレクトリのリストを取得したい場合は、

DIRECTORIES = $(wildcard ../Test/*/)

all:
    echo $(DIRECTORIES)

.hファイルを含む、そのディレクトリ内のすべてのファイル(パス付き)のリストを取得し.cppます。

なぜこれが起こるのか、それを修正する方法はありますか? リストを取得するための他のソリューションも歓迎します。

4

3 に答える 3

46

Use sort and dir functions together with wildcard:

DIRECTORY = $(sort $(dir $(wildcard ../Test/*/)))

From GNU make manual:

$(dir names...) Extracts the directory-part of each file name in names. The directory-part of the file name is everything up through (and including) the last slash in it. If the file name contains no slash, the directory part is the string ‘./’.

$(sort list) Sorts the words of list in lexical order, removing duplicate words. The output is a list of words separated by single spaces.

Also look at the second and the third method in this article: Automatically Creating a List of Directories

于 2012-12-16T03:19:21.710 に答える
18

試す:

$(shell find <directory> -maxdepth 1 -type d)

これにより、サブディレクトリに移動せずに、特定のディレクトリ内のディレクトリのリストが表示されます。リストにはすべてのディレクトリの前に.andが含まれるため、そのリストをクリーンアップする必要がある場合があります。./

于 2012-12-16T02:53:31.720 に答える