Исключая некоторые файлы из Build in 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 ответ
Вы создаете одну строку с пробелами в ней, чтобы описать набор файлов исходного кода. Это не делает то, что вы надеялись.
Вместо этого создайте список имен файлов. Следующий 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)