Как перенести $ (shell find. -Name '* .cpp') на Windows?

572
Tomáš Zato

У меня есть это в 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$ 

Это прекрасно, но в нем используется регулярное выражение ... Как я могу перенести это правильно, чтобы поиск работал хорошо в обеих системах? У makefile нет собственного метода поиска файлов?

1
Есть ли причина, по которой `dir * .cpp / s` недостаточно? Seth 6 лет назад 1
Возможный дубликат [Эквивалент Unix-команды поиска в Windows] (https://superuser.com/questions/401495/equivalent-of-unix-find-command-on-windows) Jeff Zeitlin 6 лет назад 0
Вы должны заглянуть в MinGW / Cygwin. Это наборы утилит Unix, которые запускаются в Windows и позволяют запускать сборочные файлы Unix в Windows (плюс вы получаете оболочку, похожую на Linux, в Windows ...). xenoid 6 лет назад 0

0 ответов на вопрос