![$(shell find . -name '*.cpp') を Windows に移植するにはどうすればいいですか?](https://rvso.com/image/1543363/%24(shell%20find%20.%20-name%20'*.cpp')%20%E3%82%92%20Windows%20%E3%81%AB%E7%A7%BB%E6%A4%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%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 にはファイルを検索するための独自の方法がありませんか?