2012-06-13 22 views
6

Tôi đang cố gắng sao chép tệp chương trình đã tạo vào thư mục mẹ sau khi biên dịch tự động.Chương trình sao chép SCons sau khi biên dịch thành thư mục mẹ

Tôi đã thử cách này, nhưng cách này không hiệu quả.

env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Copy("../program_name", "program_name") 

Làm cách nào tôi có thể thực hiện việc này với SCons?

Trả lời

8

Một cách tiếp cận tốt hơn sẽ được sử dụng các mục tiêu và() builder lệnh, như thế này:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Command(target = "../program_name", 
     source = prgTarget, 
     action = Copy("$TARGET", "$SOURCE")) 

Hoặc tùy thuộc vào tình hình, sử dụng Install() builder, như thế này:

prgTarget = env.Program("program_name", [ "file1.cc", "file2.cc" ]) 
Install("../program_name", source = prgTarget) 
+0

+ 1 Điều này nghe giống như một công việc tốt cho trình cài đặt. Sử dụng trình tạo lệnh có vẻ như làm phức tạp mã. Bạn có biết bất kỳ tình huống nào khi xây dựng lệnh sẽ có lợi thế không? – daramarak

+0

@daramarak, trình xây dựng Command() linh hoạt hơn, vì nó có thể là bất kỳ lệnh nào, như tập lệnh, v.v. Trình xây dựng Install() chỉ dành cho "cài đặt" (sao chép) một hoặc nhiều tệp/mục tiêu. – Brady

+0

Tôi biết rằng trình tạo Lệnh linh hoạt, nhưng tôi đã tự hỏi liệu có trường hợp Trình tạo lệnh nên được ưu tiên sao chép tệp thay vì Trình tạo cài đặt không? – daramarak

Các vấn đề liên quan