gpt4 book ai didi

斯康斯。使用 Glob 进行递归

转载 作者:行者123 更新时间:2023-12-02 04:51:51 25 4
gpt4 key购买 nike

我使用 scons 几天了,有点困惑。为什么没有内置工具用于从给定根开始递归构建源?让我解释:我有这样的源码配置:

src
Core
folder1
folder2
subfolder2_1
Std
folder1

..等等。这棵树可能更深。

现在我用这样的结构构建它:

sources = Glob('./builds/Std/*/*.cpp')
sources = sources + Glob('./builds/Std/*.cpp')
sources = sources + Glob('./builds/Std/*/*/*.cpp')
sources = sources + Glob('./builds/Std/*/*/*/*.cpp')

这看起来并不那么完美。当然,我可以写一些Python代码,但是有更合适的方法吗?

最佳答案

正如 Torsten 已经说过的,SCons 中没有“内部”递归 Glob()。你需要自己写点东西。我的解决方案是:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('src'):
for filename in fnmatch.filter(filenames, '*.c'):
matches.append(Glob(os.path.join(root, filename)[len(root)+1:]))

我想强调的是,这里需要 Glob() (不是 python 中的 glob.glob() ),尤其是当您使用 VariantDir() 时。另外,当您使用 VariantDir() 时,不要忘记将绝对路径转换为相对路径(在示例中,我使用 [len(root)+1:] 实现了这一点)。

关于斯康斯。使用 Glob 进行递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10598026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com