如何在 Windows 上移植 $(shell find . -name '*.cpp')?

如何在 Windows 上移植 $(shell find . -name '*.cpp')?

我在 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 没有自己的查找文件的方法吗?

相关内容