Tôi sẽ cố gắng kiểm soát các loại hạt khi được xây dựng trong scons. Tôi có một cây xây dựng ví dụ rất đơn giản (xem bên dưới), với trình xây dựng Poem
chỉ cần lấy tệp .txt
và chuyển đổi nó thành chữ thường trong tệp .eectxt
tương ứng.điều gì gây nên scons để tạo tệp khi tôi có trình tạo tùy chỉnh?
Trong các tệp SConstruct và SConscript của tôi, tôi khai báo phụ thuộc của 3 tệp .txt.
Nhưng tôi không thể tìm ra điều gì đang đưa những thứ này vào bản dựng mặc định!
sconstest/
SConstruct
tiger.txt
src/
SConscript
hope.txt
jabberwocky.txt
nơi tập tin * .txt là bài thơ và SConstruct và SConscript của tôi trông như thế này:
SConstruct:
env = Environment();
def eecummings(target, source, env):
if (len(target) == 1 and len(source) == 1):
with open(str(source[0]), 'r') as fin:
with open(str(target[0]), 'w') as fout:
for line in fin:
fout.write(line.lower());
return None
env['BUILDERS']['Poem'] = Builder(action=eecummings, suffix='.eectxt', src_suffix='.txt');
Export('env');
poems = SConscript('src/SConscript');
tigerPoem = env.Poem('tiger.txt');
src/SConscript:
Import('env');
input = ['jabberwocky.txt', 'hope.txt'];
output = [env.Poem(x) for x in input];
Return('output');
Những gì tôi muốn làm là khai báo sự phụ thuộc của các tệp .eectxt
từtương ứngtệp, nhưng không phải làm cho chúng được xây dựng trừ khi tôi đặt chúng một cách rõ ràng vào việc xây dựng Default()
trong tệp SConstruct hoặc tôi yêu cầu chúng rõ ràng tại dòng lệnh.
Tôi làm cách nào để thực hiện việc này?