1

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

0