Wie portiert man $(shell find . -name '*.cpp') auf Windows?

Wie portiert man $(shell find . -name '*.cpp') auf Windows?

Ich habe dies im Makefile:

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

Daher wollte ich einen allgemeinen FINDBefehl erstellen, der unter Windows und Linux korrekt funktioniert:

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

Natürlich weiß ich nicht einmal, wie man eine parametrisierte Suchvorlage für Linux erstellt. Aber was noch wichtiger ist: Ich kann keinen Befehl finden, um alle Dateien nach Muster zu finden. Windows hat Folgendes:

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

Das ist zwar schön, verwendet aber reguläre Ausdrücke ... Wie kann ich das richtig portieren, damit find auf beiden Systemen gut funktioniert? Verfügt makefile nicht über eine eigene Methode zum Suchen von Dateien?

verwandte Informationen