0

我有一个关于在当前系统的 makefile 中执行复杂命令的查询。

我目前在makefile中使用shell命令来执行命令。但是我的命令失败了,因为它是许多命令的组合,并且执行会收集大量数据。makefile 内容是这样的:

variable=$(shell ls -lart | grep name | cut -d/ -f2- )

但是make执行失败并出现 execvp 失败,因为文件列表很大,我需要解析所有文件。

请建议我解决这个问题的任何方法。基本上我想执行一个复杂的命令并将该输出分配给我想稍后在程序中使用的makefile变量。

4

2 回答 2

0

您可以轻松地使用 shell 功能来获得相同的结果,而不是将文件列表存储在变量中。有点奇怪的是,您将递归展平ls以仅获取叶子,然后运行mkdir -p这仅在父目录不存在时才真正有用,但是如果您知道想要的深度(例如当前目录和所有子目录下一级)您可以执行以下操作:

directories:
        for path in ./*name* ./*/*name*; do \
                mkdir "/some/path/$(basename "$path")" || exit 1; \
        done

甚至_

find . -name '*name*' -exec mkdir "/some/path/$(basename {})" \;
于 2013-03-20T16:20:04.850 回答
0

(这可能需要几次迭代。)

这看起来像是架构的限制,而不是 Make 限制。有几种方法可以解决它,但你必须向我们展示你是如何使用它variable的,否则即使你成功构建它,你也可能无法按照你的意愿使用它。请向我们展示您打算执行的确切variable操作。

现在我建议你做几个实验并告诉我们结果。首先,使用简短的文件列表(例如三个)尝试分配,以验证分配是否符合您的预期。二、在文件多的目录下,试试:

variable=$(shell ls -lart | grep name)

看看问题是否在grepcut

于 2013-03-20T14:54:18.967 回答