![Como portar $(shell find . -name '*.cpp') no Windows?](https://rvso.com/image/1543363/Como%20portar%20%24(shell%20find%20.%20-name%20'*.cpp')%20no%20Windows%3F.png)
Eu tenho isso no makefile:
# find cpp files in subdirectories
SOURCES := $(shell find . -name '*.cpp')
Então eu queria criar FIND
um comando genérico que se comportasse corretamente no Windows e no Linux:
ifeq ($(OS),Windows_NT)
# WINDOWS
RM = erase /Q
FIND = ???
else
# LINUX
ifeq ($(shell uname), Linux)
RM = rm -f
# This is probably wrong too, but I have no idea how to do it right
FIND = $(find . -name '$1')
endif
endif
Claro, eu nem sei como fazer um modelo de localização parametrizado para Linux. Mas o mais importante é que não consigo encontrar o comando para localizar todos os arquivos por padrão. O Windows tem isto:
dir * /s/b | findstr \.cpp$
O que é lindo, mas usa expressão regular... Como posso portar isso corretamente, para que find se comporte bem em ambos os sistemas? O makefile não possui seu próprio método para localizar arquivos?