我正在尝试列出某个文件夹内的所有子目录。我的操作系统是Windows 10,我使用的是GNU Make文件,版本是:GNU Make 4.0专为x86_64-pc-cygwin构建,这是我使用的命令:
ROOT_DIRECTORY := X:\
DIRS := $(shell dir $(ROOT_DIRECTORY) /s /b /ad)
$(info subdirs : $(DIRS))
当我使用CMD执行命令dir /s /b /ad
时,它工作得很好,但是当我尝试使用$(shell)函数执行它时,输出为:
./tools/bin/sh: dir: command not found
subdirs :
make
不使用cmd.exe
运行shell命令,至少默认情况下不运行。它使用POSIX Shell,您可以看到它是发出诊断消息(.tools/bin/sh
)的组件。用于列出目录内容的shell命令为ls
,但它本身不会提供所需的内容,因为它不等效于ls
。
您完全尝试执行此操作是可疑的。如果dir /ad
完全适合您的工作,那么您可能应该以不同的方式解决问题。但是,如果必须使用make
,则一种选择是确保已安装Cygwin的make
程序,并使用该程序:
find
另一个选择可能是显式运行DIRS := $(shell find * -type d)
。