2013-01-31 12 views
9

Muszę przyznać, że jestem nowy w WebKit, więc zadawanie właściwych pytań nie jest takie łatwe.Wiązania WebKit JS: krok po kroku, jak

Co mam to WebKit z WebKit.org. Aktualizuje, buduje, mogę debugować - mam to działa w systemie Windows.

Interesuje mnie, jak wygenerować pliki pośredniczące dla niektórych plików IDL, które mam. Rozumiem obraz wysoki poziom:

  1. Napisz interfejsów za pomocą języka IDL
  2. Generowanie pliki pośredniczące (.h & pliki .cpp).
  3. Dodaj swój kod do poprzednio wygenerowanych plików pośredniczących.

Podałem moje pliki IDL w "WebCore.gypi". Podałem wtedy ścieżkę do moich plików IDL w "WebCore.gyp". Najwyraźniej to nie wystarczy, ponieważ tworzenie WebKita nie generuje plików pośredniczących dla moich plików IDL.

Podejrzewałem w pewnym momencie, że może moje pliki IDL zawierają niezdefiniowane atrybuty, ale wszystko wydaje się w porządku.

Jakieś wskazówki? Czy znasz jakieś wyraźne "Jak"?

Dzięki!

Edit 130206:

I wykopali kilka pozornie WebKit i współdziała z kilku systemów kompilacji; na przykład GYP jest dla Chromium. Szczerze mówiąc, nie spodziewałem się tej komplikacji, więc nie wspomniałem, że muszę wygenerować powiązanie dla Safari, który ma inny system kompilacji i jako taki ma swoje własne unikalne "jak". Pytanie więc brzmi teraz: jak działa system budowania Safari? Gdzie muszę umieścić moje pliki IDL? Dzięki!

Odpowiedz

8

Cóż, mogę Ci powiedzieć, co mi pomogło. Niestety nadal nie mogłem znaleźć żadnej dokumentacji, więc brałem udział w wielu próbach i błędach.

Jeśli chcesz wygenerować powiązania JS dla Safari trzeba:

  1. zmodyfikować 'DerivedSources.make'.
  2. Upewnij się, że twoje pliki IDL są poprawne.

"DerivedSources.make" można znaleźć w '\ WebKit \ Source \ WebCore \'. Wewnątrz tego pliku make należy podać:

  1. Ścieżka do folderu (zawierającego pliki IDL) w polu "VPATH".
  2. Każdy i wszystkie twoje pliki IDL w "BINDINGS_IDLS".
  3. Znów ścieżkę do twojego folderu w 'IDL_INCLUDES'.

Zbuduj WebKit. Jeśli po tym kroku nadal nie możesz zobaczyć plików JSXXX.h i JSXXX.cpp (oznaczonych generetem dla każdego pliku XXX.IDL), musisz sprawdzić pliki IDL.

w moim przypadku nic nie zostało wygenerowane po kroku budować i mam błąd jak poniżej:

6> Następny żeton powinny być narzędziami, ale mymodule w module mymodule {
6> IDLParser.pm:750 na /WebKit/Source/WebCore/bindings/scripts//IDLParser.pm wiersz 129.
6> w /WebKit/Source/WebCore/MyFolder/XXX.idl at/WebKit/Source/WebCore/bindingings/scripts // IDLParser. pm linia 173.
6> /WebKit/Source/WebCore/DerivedSources.make:1024: przepis na cel `XXX.h 'nie powiodło się
6> make: * [XXX.h ] Błąd 255

Problem polegał na tym, że każdy z interfejsów IDL był zamknięty w module (przestrzeni nazw) o nazwie Mój moduł, jak widać powyżej. Usunąłem wszystkie te moduły (oczywiście z zachowaniem interfejsów), a przy następnej kompilacji wszystko było w porządku. Używanie własnej nazwy modułu wydaje się nie być tak proste, jak dołączanie do niego interfejsów IDL; prawdopodobnie będziesz zmuszony do napisania niestandardowych powiązań, aby to osiągnąć (co nie jest zalecane przez zespół WebKit).

To było to dla mnie, mam nadzieję, że jest to również pomocne dla Ciebie.

Powiązane problemy