2013-01-31 47 views
9

我不得不承认我是WebKit的新手,所以问正确的问题并不那么容易。WebKit JS绑定:一步一步如何

我所拥有的是来自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文件放在哪里?谢谢!

回答

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 line 129.
6> in /WebKit/Source/WebCore/MyFolder/XXX.idl at/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团队推荐的)。

所以这对我来说,希望它对你也有帮助。