由于我是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 字符串),这些文件将用于制作静态库。
感谢任何帮助。
答案 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)