Windows下MakeFile怎么获取所有子目录中所有文件的文件列表

Windows下MakeFile如何获取所有子目录中所有文件的文件列表?
如题,Windows下MakeFile如何获取所有子目录中所有文件的文件列表?
其中,子目录的名字是任意的(也就是说不知道子目录名)
而且子目录下还有子目录
可以限定目录深度,但要求深度可变(也可以不限定,最好不限定)

在Linux下可以用Shell命令,比如  $(shell ls) 或者  $(shell find . -maxdepth 1 -type d)之类的
但在Window下如何做?

我现在使用的是一个笨方法如下

SUBDIRS := .
FILES1 := $(foreach v,$(SUBDIRS),$(wildcard $(v)/*)) 
FILES2 := $(foreach v,$(FILES1),$(wildcard $(v)/*)) 
FILES3 := $(foreach v,$(FILES2),$(wildcard $(v)/*)) 
FILES4 := $(foreach v,$(FILES3),$(wildcard $(v)/*)) 
FILES5 := $(foreach v,$(FILES4),$(wildcard $(v)/*)) 
FILES := $(FILES1) $(FILES2) $(FILES3) $(FILES4) $(FILES5) 


这种方法虽然可行,但深度加一层,要再加一个FILESN := $(foreach v,$(FILESN-1),$(wildcard $(v)/*)) 
这种方法让谁看了都不会满意,
求好的方法
------解决思路----------------------
 $(shell dir /b /s /a-d c:\*.*)

C:\>dir /?
显示目录中的文件和子目录列表。

DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]

  [drive:][path][filename]
              指定要列出的驱动器、目录和/或文件。

  /A          显示具有指定属性的文件。
  attributes   D  目录                R  只读文件
               H  隐藏文件            A  准备存档的文件
               S  系统文件            -  表示“否”的前缀
  /B          使用空格式(没有标题信息或摘要)。
  /C          在文件大小中显示千位数分隔符。这是默认值。用 /-C 来
              禁用分隔符显示。
  /D          跟宽式相同,但文件是按栏分类列出的。
  /L          用小写。
  /N          新的长列表格式,其中文件名在最右边。
  /O          用分类顺序列出文件。
  sortorder    N  按名称(字母顺序)     S  按大小(从小到大)
               E  按扩展名(字母顺序)   D  按日期/时间(从先到后)
               G  组目录优先           -  反转顺序的前缀
  /P          在每个信息屏幕后暂停。
  /Q          显示文件所有者。
  /S          显示指定目录和所有子目录中的文件。
  /T          控制显示或用来分类的时间字符域。
  timefield   C  创建时间
              A  上次访问时间
              W  上次写入的时间
  /W          用宽列表格式。
  /X          显示为非 8.3 文件名产生的短名称。格式是 /N 的格式,
              短名称插在长名称前面。如果没有短名称,在其位置则
              显示空白。
  /4          用四位数字显示年

可以在 DIRCMD 环境变量中预先设定开关。通过添加前缀 - (破折号)
来替代预先设定的开关。例如,/-W。

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……