2010-06-07 27 views
5

hiện tại tôi đang cố gắng chuyển một dự án di sản triệu triệu từ các tập lệnh .cmd thành Dãy. Các bộ phận của nó là VC++, một số khác là Delphi. Tạo bản ghi cho các phần C++ thật dễ dàng.Làm cách nào để buộc trình tạo bản ghi SCons thay đổi thư mục?

Để xây dựng phần delphi, tôi đã viết một trình xây dựng rất đơn giản để phát hiện xem đó là một chương trình hay dự án thư viện. Gọi người xây dựng sau khi chuỗi qua SConscript làm cho scons gọi dcc32 $ subdir/project.dpr những gì lừa dối dcc32 để tìm kiếm các đơn vị trong thư mục hiện tại thay vì $ subdir.

Có cách nào để yêu cầu scons nhập $ subdir trước khi thực hiện các lệnh nằm trong sconscript hay tôi nên sửa nó trong builder?

Cảm ơn bạn trước

Trả lời

5

SCons đã thay đổi vào thư mục của SConscripts thư mục con khi đọc chúng, vì vậy nó trông giống như vấn đề sẽ phải được cố định trong xây dựng thực tế.

Khi các tập lệnh được phân tích cú pháp và SCons đang chạy lệnh xây dựng, nó nằm trong thư mục cấp cao nhất. Các lệnh sau đó được phát hành bằng cách sử dụng tên đường dẫn liên quan đến thư mục cấp cao nhất đó. Cách thay đổi hành vi này là sử dụng từ khóa chdir trong Trình tạo của bạn.

Ví dụ từ trang scons con người là như sau:

b = Builder(action='build < ${SOURCE.file} > ${TARGET.file}', 
      chdir=1) 
env = Environment(BUILDERS = {'MyBuild' : b}) 
env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in') 

Bạn cần phải xác định các thành phần .file như việc sử dụng các chdir không thay đổi tên truyền cho người xây dựng, tức là họ vẫn còn tương đối so với thư mục cấp cao nhất.

+0

Đó chính xác là sự kết hợp tôi cần. Giải pháp của bạn đã khắc phục được sự cố của tôi. Cảm ơn nhiều! – Damg

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