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