¿Cómo portar $(shell find . -name '*.cpp') en Windows?

¿Cómo portar $(shell find . -name '*.cpp') en Windows?

Tengo esto en el archivo MAKE:

# find cpp files in subdirectories
SOURCES := $(shell find . -name '*.cpp')

Entonces quería crear FINDun comando genérico que se comportara correctamente en Windows y 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

Por supuesto, ni siquiera sé cómo crear una plantilla de búsqueda parametrizada para Linux. Pero lo más importante es que no puedo encontrar el comando para buscar todos los archivos por patrón. Windows tiene esto:

dir * /s/b | findstr \.cpp$

Lo cual es hermoso, pero usa expresiones regulares... ¿Cómo puedo portar esto correctamente para que find se comporte bien en ambos sistemas? ¿Makefile no tiene su propio método para buscar archivos?

información relacionada