![Windows에서 $(shell find . -name '*.cpp')를 포팅하는 방법은 무엇입니까?](https://rvso.com/image/1543363/Windows%EC%97%90%EC%84%9C%20%24(shell%20find%20.%20-name%20'*.cpp')%EB%A5%BC%20%ED%8F%AC%ED%8C%85%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%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에는 파일을 찾는 자체 방법이 없나요?