2013-01-31 58 views
9

Tôi phải thừa nhận tôi mới sử dụng WebKit để hỏi câu hỏi đúng không phải là dễ dàng.Liên kết JS WebKit: từng bước làm cách nào để

Điều tôi có là WebKit từ WebKit.org. Nó cập nhật, xây dựng, tôi có thể gỡ rối - tôi đã làm nó trên Windows.

Điều tôi quan tâm là cách tạo tệp sơ khai cho một số tệp IDL mà tôi có. Tôi hiểu được bức tranh cao cấp:

  1. Viết các giao diện bằng cách sử dụng ngôn ngữ IDL
  2. Tạo file còn sơ khai (.h & file cpp).
  3. Thêm mã của bạn trong các tệp gốc được tạo trước đây.

Tôi đã chỉ định tệp IDL của mình trong "WebCore.gypi". Tôi đã chỉ định sau đó đường dẫn đến tệp IDL của tôi trong "WebCore.gyp". Rõ ràng điều này là không đủ khi xây dựng WebKit không tạo ra các tệp gốc cho các tệp IDL của tôi.

Tôi đã nghi ngờ tại một thời điểm rằng có thể tệp IDL của tôi chứa các thuộc tính không xác định nhưng mọi thứ có vẻ ổn.

Bất kỳ mẹo nào? Ngoài ra, bạn có biết bất kỳ "Làm thế nào để" rõ ràng?

Cảm ơn!

Sửa 130.206:

tôi đào một số chi tiết và rõ ràng WebKit tương tác với một số hệ thống xây dựng; ví dụ GYP là dành cho Chromium. Tôi thành thật không mong đợi sự phức tạp đó nên tôi không đề cập đến việc tôi cần tạo ra ràng buộc cho Safari có hệ thống xây dựng khác và như vậy là "cách làm thế nào" độc đáo của riêng nó. Vì vậy, câu hỏi bây giờ là, hệ thống xây dựng Safari hoạt động như thế nào? Tôi cần phải đặt các tệp IDL của mình ở đâu? Cảm ơn!

Trả lời

8

Vâng, tôi có thể cho bạn biết điều gì đã giúp tôi. Thật không may tôi vẫn không thể tìm thấy bất kỳ tài liệu nào vì vậy rất nhiều thử nghiệm và lỗi đã được tham gia.

Nếu bạn muốn tạo ra các ràng buộc JS cho Safari, bạn phải:

  1. Sửa 'DerivedSources.make'.
  2. Đảm bảo tệp IDL của bạn là chính xác.

'DerivedSources.make' có thể được tìm thấy trong '\ WebKit \ Source \ WebCore \'. Bên trong tệp này, bạn phải chỉ định các thông tin sau:

  1. Đường dẫn đến thư mục của bạn (chứa tệp IDL) trong 'VPATH'.
  2. Mỗi và tất cả các tệp IDL của bạn trong 'BINDINGS_IDLS'.
  3. Một lần nữa đường dẫn đến thư mục của bạn trong 'IDL_INCLUDES'.

Tạo WebKit. Nếu sau bước này, bạn vẫn không thể thấy các tệp JSXXX.h và JSXXX.cpp của bạn (được phân bổ cho mỗi tệp XXX.IDL) so với bạn phải kiểm tra tệp IDL của mình.

Trong trường hợp của tôi không có gì được tạo ra sau khi bước xây dựng và tôi đã nhận ra lỗi như thế này:

6> thẻ Tiếp nên dụng cụ, nhưng MyModule tại mô-đun MyModule {
6> IDLParser.pm:750 tại /WebKit/Source/WebCore/bindings/scripts//IDLParser.pm dòng 129.
6> trong /WebKit/Source/WebCore/MyFolder/XXX.idl tại/WebKit/Source/WebCore/bindings/scripts // IDLParser. pm line 173.
6> /WebKit/Source/WebCore/DerivedSources.make:1024: công thức cho mục tiêu `XXX.h 'không thành công
6> make: * [XXX.h ] Lỗi 255

Vấn đề là mỗi giao diện IDL được đặt trong một mô-đun (không gian tên) được gọi là MyModule như bạn có thể thấy ở trên. Tôi đã loại bỏ tất cả các mô-đun này (giữ các giao diện của khóa học) và tại xây dựng tiếp theo tất cả mọi thứ đã được tạo ra tốt. Sử dụng tên mô-đun của riêng bạn dường như không thẳng thắn như bao bọc các giao diện IDL với nó; có lẽ bạn sẽ bị buộc phải viết các ràng buộc tùy chỉnh để thực hiện điều này (điều này không được nhóm WebKit khuyên dùng).

Vì vậy, đó là nó cho tôi, hy vọng nó cũng hữu ích cho bạn.

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