Tôi đang suy nghĩ về việc sử dụng SCons cho một dự án mới. Nó trông rất tốt, mặc dù tôi đang tìm kiếm VariantDir
khá khó hiểu.Tại sao SCons VariantDir() không đưa đầu ra vào thư mục đã cho?
Tôi có một dự án đơn giản với một số tệp nguồn C trong một thư mục và tôi muốn xây dựng ở chế độ "bình thường" và "hồ sơ" - với hai bộ tùy chọn khác nhau để gcc. Tôi muốn các kết quả đầu ra đi vào thư mục bình thường/và profile/tương ứng.
Để thử nghiệm, tôi đã cắt giảm chỉ thành một tệp nguồn duy nhất, t.c, trong đó có main()
trong đó. tập tin SConstruct
của tôi là trong cùng thư mục, và trông như thế này:
normal = DefaultEnvironment(tools=['mingw'], CCFLAGS = '-O2')
normal.VariantDir('release', '.', duplicate=0)
normal.Program('t', ['t.c'])
#profile = normal.Clone(CCFLAGS='-O2 -pg', LINKFLAGS = '-pg')
#profile.VariantDir('profile', '.', duplicate=0)
#profile.Program('t', ['t.c'])
Khi tôi chạy scons, tôi mong nó để đưa vào và t.exe vào phát hành /, nhưng nó đặt chúng trong thư mục hiện hành . Và tôi không thể chạy nó ở tất cả với 3 dòng hồ sơ không được chú ý - nếu có, tôi gặp lỗi này:
scons: *** Hai môi trường có hành động khác nhau được chỉ định cho cùng một mục tiêu:
Về cơ bản, tôi không chắc chắn lý do tại sao các cuộc gọi VariantDir() của tôi không yêu cầu scons đưa đầu ra vào thư mục đầu ra được chỉ định, release
.
(Tôi đã đọc một chút công bằng trong tài liệu và nhóm tin tức, nhưng không có gì trả lời câu hỏi này. Gần nhất tôi là this page, mô tả một điều tương tự, nhưng nó liên quan đến một thư mục/src riêng biệt và hai các tệp scons riêng biệt và nhập/xuất các biến giữa chúng. Điều đó dường như không dễ chịu.)
Vâng, đó là điểm duy nhất có liên quan khi không SConscript được sử dụng. –