![Wie portiert man $(shell find . -name '*.cpp') auf Windows?](https://rvso.com/image/1543363/Wie%20portiert%20man%20%24(shell%20find%20.%20-name%20'*.cpp')%20auf%20Windows%3F.png)
Ich habe dies im Makefile:
# find cpp files in subdirectories
SOURCES := $(shell find . -name '*.cpp')
Daher wollte ich einen allgemeinen FIND
Befehl 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?