Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scons 能否使用SCON从命名不确定的源文件构造目标?_Scons - Fatal编程技术网

Scons 能否使用SCON从命名不确定的源文件构造目标?

Scons 能否使用SCON从命名不确定的源文件构造目标?,scons,Scons,我有一个目录,其中有多个名称不确定的源文件。我只知道文件扩展名。我想获取每个源文件,并从每个源文件构建一个目标。我当前使用的方法是使用for循环确定每个源的名称: targets = [] for file in listdir('.'): if file.endswith('.xdm'): targets += env.m4(source=file) 这样做的好处是,开发人员在添加新源代码时不必维护SConscript。问题是目标不再被清理,因为我不完全理解 因此,

我有一个目录,其中有多个名称不确定的源文件。我只知道文件扩展名。我想获取每个源文件,并从每个源文件构建一个目标。我当前使用的方法是使用for循环确定每个源的名称:

targets = []
for file in listdir('.'):
    if file.endswith('.xdm'): 
        targets += env.m4(source=file)
这样做的好处是,开发人员在添加新源代码时不必维护SConscript。问题是目标不再被清理,因为我不完全理解


因此,我的问题是,有没有更合适的方法来做到这一点,使用内置的SCons功能,而不依赖于更传统的流控制,还是我应该确保我的每个源都已确定,并在SConscript中单独列出它们?

而不是摆弄
listdir
我只需使用
Glob()
方法,由SCons自己提供:

这(就像您问题中的示例)是一种非常好的方法,因为它使用了sconscript实际上是Python脚本这一事实。
Glob()
方法的优点是还可以查找硬盘上尚不存在的
*.xdm
文件,但这些文件可能会在以后的构建过程中创建


我想知道你提到的关于目标清理的问题。你上面问题中的问答似乎与我无关。如果您在上述方法中遇到实际的“清理”问题,请在完整的逐字输入和输出的同时发布一个单独的问题。如果应该证明这是行不通的,我会认为它是一个bug。

而不是篡改<代码> Listdir >我将简单地使用<代码> GULL()/代码>方法,如SCONS本身提供的:

这(就像您问题中的示例)是一种非常好的方法,因为它使用了sconscript实际上是Python脚本这一事实。
Glob()
方法的优点是还可以查找硬盘上尚不存在的
*.xdm
文件,但这些文件可能会在以后的构建过程中创建


我想知道你提到的关于目标清理的问题。你上面问题中的问答似乎与我无关。如果您在上述方法中遇到实际的“清理”问题,请在完整的逐字输入和输出的同时发布一个单独的问题。如果它应该证明这是行不通的,我会认为它是一个bug。

谢谢你,德克,你的解决方案工作得很好。如果我有时间的话,我会在稍后再看一看listdir方法,如果我不知道为什么--clean失败,我会发布一个后续问题。谢谢你,dirk,你的解决方案很好地工作了。如果我有时间的话,我会在稍后再看一看listdir方法,如果我不知道为什么——clean失败了,我会发布一个后续问题。
for file in Glob("*.xdm"):
    env.m4(source=file)