У меня есть это в 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 нет собственного метода поиска файлов?