WebKit浏览器编译——开启宏定义

例如:VIDEO

代码中已经对VIDEO做了一定的支持,但默认情况下并没有开启,这些支持都在一个ENABLE_VIDEO的宏定义中括起来了,可以grep下源代码看下有很多ENABLE(VIDEO)括起来的代码。

代码中需要的宏
这个ENABLE的宏定义在Source/JavaScriptCore/wtf/Platform.h中被定义的,#define ENABLE(WTF_FEATURE) (defined ENABLE_##WTF_FEATURE  && ENABLE_##WTF_FEATURE)

由以上ENABLE(VIDEO)对应的宏定义就是ENABLE_VIDEO

注意这里的##是C语言宏的连接符,即把ENABLE_与WTF_FEATURE(传入的是WML)的内容连接起来,这样就连接成了ENABLE_WML。

这样#if ENABLE(VIDEO) 会被预处理成 #if (defined ENABLE_VIDEO && ENABLE_VIDEO)

由此可见,我们首先要做的就是开启这个ENABLE_VIDEO宏定义。

编译环境中变量定义:

在 GtkWebkit-2.2.2 源码包中不含有 makefile ,由 configure 生成,所以配置都在 configure 时完成,

例如:#if ENABLE(VIDEO) && USE(GSTREAMER)

方法一:

1、ENABLE(VIDEO) 打开宏    ./configure  --enable-video

2、USE(GSTREAMER) 在 configure 中不能直接找到配置开关,但 configure 文件中有条件控制

if test "$enable_video" = "yes" || test "$enable_web_audio" = "yes"; then
$as_echo "#define WTF_USE_GSTREAMER 1" >>confdefs.h
fi


所以在 configure 时候同时打开 --enable_web_audio 开关就 OK

方法二:(猜测,但试验好使)

宏在 configure 时候确认是否打开,宏的关闭保存在 WebKitFeatures.h(ENABLE) 和 autotoolsconfig.h(USE) 两个 .h 文件中,直接修改该 .h 文件开控制宏



课外补充(Android):

在external/webkit/Android.mk中加入下面代码开启宏的设置,我们需要让他的值为true,这里的含义是,如果ENABLE_WML环境值没有被定义过,则我们定义它为true。

ifeq ($(ENABLE_WML), )

   ENABLE_WML := true

endif

在编译脚本中定义代码中的宏

但是经过上述的内容,只是定义了编译环境里的变量,代码中的宏定义还没有被定义的,那么需要主动来设置下宏定义了,通过下面的方式

ifeq ($(ENABLE_WML), true)

   LOCAL_CFLAGS += -DENABLE_WML=1

endif

这里的-D编译选项是用来定义代码中的宏的,即设置c/c++中的DENABLE_WML宏的值为1。就相当于代码中的#define ENABLE_WML 1

通过上述两步,c/c++的宏被成功的定义了。

另外说下Source/JavaScriptCore/wtf/Platform.h这里有很多#defineENABLE_XXX的宏,这里可以修改一些宏的值来修改配置。

总结下上述的过程。有一个编译的环境变量叫ENABLE_WML,(你也可以命名为其他的名字),在判断这个环境变量如果没有被定义的话,那么在该脚本中定义它的值为true。

然后在脚本的后面,判断该环境变量值是否为true,如果为true那么就在编译配置LOCAL_CFLAGS中加入c/c++中的宏定义DENABLE_WML=1,(这里的宏定义命名必须是DENABLE_WML了。)

经过以上的配置,然后编译发现会有错误的。编译不过,下一步就是 头文件的包含 了 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值