我有一组目录中的源列表
SOURCES = $(wildcard src/**/*.cpp)
举例来说,我们有一个这样的目录
src
|- dir_one
| |- file_one.cpp
| `- file_two.cpp
|
|- dir_two
| |- file_three.cpp
| `- file_four.cpp
|
`- dir_three
`-file_five.cpp
那么$(SOURCES)
等于
src/dir_one/file_one.cpp
src/dir_one/file_two.cpp
src/dir_two/file_three.cpp
src/dir_two/file_four.cpp
src/dir_three/file_five.cpp
我想使用 Makefile 函数来获取仅包含文件名称的列表,但我不知道有哪些目录。例如我想得到
NAMES = <some makefile functions>
所以 $(NAMES) 等于
file_one file_two file_three file_four file_five
**
首先,请注意 GNU make 的通配符函数对于某些 shell 的方式没有任何特殊含义。using$(wildcard src/**/*.cpp)
的行为与 using 相同$(wildcard src/*/*.cpp)
;*
“匹配零个或多个字符”( ) 和“匹配零个或多个字符后跟零个或多个字符”(**
)之间没有区别。其次,有很多 GNU Make 函数可以处理文件名;它们都显示在手册中。
你可以使用: