[GNU使用$ {shell dir)命令列出目录

问题描述 投票:0回答:1

我正在尝试列出某个文件夹内的所有子目录。我的操作系统是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 :
windows makefile gnu-make
1个回答
0
投票

make不使用cmd.exe运行shell命令,至少默认情况下不运行。它使用POSIX Shell,您可以看到它是发出诊断消息(.tools/bin/sh)的组件。用于列出目录内容的shell命令为ls,但它本身不会提供所需的内容,因为它不等效于ls

您完全尝试执行此操作是可疑的。如果dir /ad完全适合您的工作,那么您可能应该以不同的方式解决问题。但是,如果必须使用make,则一种选择是确保已安装Cygwin的make程序,并使用该程序:

find

另一个选择可能是显式运行DIRS := $(shell find * -type d)

© www.soinside.com 2019 - 2024. All rights reserved.