Eu tenho uma lista de fontes em um conjunto de diretórios por
SOURCES = $(wildcard src/**/*.cpp)
Digamos, por exemplo, que temos um diretório como este
src
|- dir_one
| |- file_one.cpp
| `- file_two.cpp
|
|- dir_two
| |- file_three.cpp
| `- file_four.cpp
|
`- dir_three
`-file_five.cpp
então $(SOURCES)
é igual a
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
Quero usar funções Makefile para obter uma lista apenas dos nomes dos arquivos, MAS não sei quais diretórios existem. Então, por exemplo, eu quero obter
NAMES = <some makefile functions>
então $(NAMES) é igual a
file_one file_two file_three file_four file_five
Primeiro, esteja ciente de que as funções curinga do GNU make não têm nenhum significado especial para
**
o modo como alguns shells têm. Using$(wildcard src/**/*.cpp)
tem comportamento idêntico a using$(wildcard src/*/*.cpp)
; não há diferença entre "corresponder zero ou mais caracteres" (*
) e "corresponder zero ou mais caracteres seguidos de zero ou mais caracteres" (**
).Segundo, existem muitas funções do GNU Make que funcionam com nomes de arquivos; todos eles são mostrados no manual .
Você poderia usar: