Tôi muốn đặt trình biên dịch xác định là -DBLUB cũng như -DFOO = 1.Tạo hỗn hợp (giá trị được đặt) CPPDEFINES trong SCON
Hiện nay tôi chỉ có:
env.Append("CPPDEFINES", ["BLUB", "VALUE2"])
bây giờ tôi muốn bao gồm một phần ba xác định qua "FOO": 1 và do đó sử dụng CPPDEFINES như một cuốn từ điển vì vậy tôi có thể sau này kiểm tra khá dễ dàng
env["CPPDEFINES"].get("FOO") == 1
hoặc hơn. Mọi thứ tôi cố gắng dẫn đến lỗi cú pháp hoặc lỗi lạ. Có thể giải thích những cách kỳ lạ để làm điều này trong python với tôi?
Bạn __CANNOT__ sử dụng * env.Append * trên một môi trường mới kể từ * CPPDEFINES * được khởi tạo như một danh sách và Nối chỉ cần thêm từ điển dưới dạng mục danh sách. Để làm việc này bạn phải sử dụng * env ["CPPDEFINES"] = {'Foo': 1} * sao cho biến/biến CPPDEFINES * thực tế được thay thế. – abergmeier
@LCIDFire 'CPPDEFINES' không được khởi tạo như một danh sách cho tôi trong Môi trường mới trong các scons 2.0.1. Khi tôi tạo một môi trường mới, tôi có thể sử dụng mã tôi đã viết ở trên. Bạn có quyền chỉ ra rằng nếu 'CPPDEFINES' đã là một danh sách, bạn sẽ nhận được lỗi - do đó dòng đầu tiên của câu trả lời của tôi :) –
Đối với danh sách, bạn có thể xử lý nó với:' env.Append (CPPDEFINES = ['BLUB', 'VALUE2', ('Foo', '1')]) '. Nó sẽ dẫn đến '-DBLUB -DVALUE2 -DFoo = 1' Bạn nên thêm nó vào câu trả lời của bạn. – Phong