从Build in Scons中排除一些文件

时间:2014-04-24 07:01:16

标签: python makefile scons

由于我是Scons的新手,我发现很难将现有的Makefile迁移到Scons。

背景 我在一个目录中有50个文件。我想只使用* .cxx扩展名过滤文件,那个文件名也没有字符串" win32"

有人可以在Scons中建议这个逻辑的实现:

Makefile实施:

WIN32FILTER = $(wildcard *win32*)
CXXOBJS = $(patsubst %.cxx,%.o,$(filter-out $(WIN32FILTER),$(wildcard *.cxx)))

在Scons,我正在尝试这样的事情:

moduleSources = ''
for root, dirs, files in os.walk('./'):
    for filename in fnmatch.filter(files, '*.cxx'):
        if "win32" not in filename:
            moduleSources += ' ' + filename  

env.StaticLibrary( "support_host", moduleSources)

moduleSources 此处应包含所有* .cxx文件的列表(不包括 win32 字符串),这些文件将用于制作静态库。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以创建一个包含空格的单个字符串来描述源代码文件集。这不符合你的期望。

而是创建一个文件名列表。以下SConstruct可以满足您的需求:

import os
import fnmatch

env = Environment()

moduleSources = []
for root, dirs, files in os.walk('./'):
    for filename in fnmatch.filter(files, '*.cxx'):
        if "win32" not in filename:
            moduleSources.append(os.path.join(root, filename))

env.StaticLibrary( "support_host", moduleSources)