9

私は WebKit の初心者であることを認めなければならないので、正しい質問をするのはそれほど簡単ではありません。

私が持っているのはWebKit.orgの WebKit です。更新、ビルド、デバッグが可能です。Windows で動作するようになりました。

私が興味を持っているのは、私が持っているいくつかの IDL ファイルのスタブ ファイルを生成する方法です。私は大まかなイメージを理解しています:

  1. IDL 言語を使用してインターフェイスを作成する
  2. スタブ ファイル (.h & .cpp ファイル) を生成します。
  3. 以前に生成されたスタブ ファイルにコードを追加します。

「WebCore.gypi」で IDL ファイルを指定しました。「WebCore.gyp」で IDL ファイルへのパスを指定しました。WebKit をビルドしても IDL ファイルのスタブ ファイルが生成されないため、これでは不十分なようです。

ある時点で、IDL ファイルに未定義の属性が含まれているのではないかと疑っていましたが、すべて問題ないようです。

任意のヒント?また、明示的な「方法」を知っていますか?

ありがとう!

編集 130206:

さらに掘り下げたところ、どうやらWebKitはいくつかのビルドシステムとやり取りします。たとえば、GYP は Chromium 用です。正直なところ、その複雑さは予想していなかったので、別のビルド システムを持つ Safari 用のバインディングを生成する必要があること、および独自の「ハウツー」については言及しませんでした。では、ここで問題になるのは、Safari ビルド システムはどのように機能するのかということです。IDL ファイルはどこに置く必要がありますか? ありがとう!

4

1 に答える 1

8

さて、私はあなたに何が私を助けたのかを言うことができます。残念ながら、まだドキュメントが見つからなかったため、多くの試行錯誤が行われました。

SafariのJSバインディングを生成する場合は、次のことを行う必要があります。

  1. 'DerivedSources.make'を変更します。
  2. IDLファイルが正しいことを確認してください。

「DerivedSources.make」は「\WebKit\ Source \WebCore\」にあります。このmakeファイル内で、以下を指定する必要があります。

  1. 'VPATH'内のフォルダー(IDLファイルを含む)へのパス。
  2. 'BINDINGS_IDLS'内のすべてのIDLファイル。
  3. ここでも、「IDL_INCLUDES」内のフォルダーへのパス。

WebKitをビルドします。この手順を実行してもJSXXX.hファイルとJSXXX.cppファイル(XXX.IDLファイルごとに生成される)が表示されない場合は、IDLファイルを確認する必要があります。

私の場合、ビルドステップの後に何も生成されず、次のようなエラーが発生しました。

6>次のトークンを実装する必要がありますが、モジュールMyModuleのMyModule {
6> IDLParser.pm:750(/WebKit/Source/WebCore/bindings/scripts//IDLParser.pm行129)
。6> / WebKit / Source / WebCore/ MyFolder / XXX.idl(/WebKit/Source/WebCore/bindings/scripts//IDLParser.pm行173
)。6> /WebKit/Source/WebCore/DerivedSources.make:1024:ターゲット`XXX.h'のレシピが失敗しました
6> make:* [XXX.h]エラー255

問題は、上記のように、各IDLインターフェイスがMyModuleというモジュール(名前空間)で囲まれていることでした。私はこのモジュールをすべて削除し(もちろんインターフェイスは維持します)、次のビルドですべてが正常に生成されました。独自のモジュール名を使用することは、IDLインターフェイスをモジュールで囲むほど簡単ではないようです。ほとんどの場合、これを実現するためにカスタムバインディングを作成する必要があります(これはWebKitチームによって推奨されていません)。

それが私にとってはそれでした、それがあなたにも役立つことを願っています。

于 2013-02-12T07:56:24.943 に答える