![Как портировать $(shell find . -name '*.cpp') на Windows?](https://rvso.com/image/1543363/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%24(shell%20find%20.%20-name%20'*.cpp')%20%D0%BD%D0%B0%20Windows%3F.png)
У меня в 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 нет собственного метода для поиска файлов?