Как портировать $(shell find . -name '*.cpp') на Windows?

Как портировать $(shell find . -name '*.cpp') на Windows?

У меня в makefile есть следующее:

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

Поэтому я хотел создать универсальную FINDкоманду, которая будет корректно работать в Windows и 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

Конечно, я даже не знаю, как сделать параметризованный шаблон поиска для Linux. Но что еще важнее, я не могу найти команду, чтобы найти все файлы по шаблону. В Windows есть это:

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

Что прекрасно, но это использует регулярное выражение... Как мне правильно это портировать, чтобы find работал хорошо на обеих системах? Разве у makefile нет собственного метода для поиска файлов?

Связанный контент