首先必须使用GNU make来编译mozilla的代码,其他make程序可能会有问题。编译最简单的方法就是
make -f client.mk
编译完成之后你可以直接运行编译后的结果,而不用打包。方法是从${objbuild}/dist/bin中运行./mozilla或者./firefox,或者可能只有xulrunner。这取决于代码的编译方式。${objbuild}是指定的mozilla编译目录。
对于从mozilla trunk代码(firefox 3)编译的,可以直接在${objbuild}下运行
make package
来打包编译结果。然后再来看看具体的过程:
下载代码
我推荐从mozilla cvs仓库中下载最新的代码,这样可以很方便的更新编译而不需要每次都下载最新的代码。首先值得一提的是,不管你要编译那种工程(browser, mail, xulrunner, suite等),基本方法都是一样的。mozilla的大部分基础代码对于所有的编译是一样的,所以不管checkout那种工程,其目录结构和代码很大程度是一样的。
以browser(其实就是firefox)方法是:
第一步,checkout文件client.mk,这对所有工程都是一样的。
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
然后,checkout如下文件,此文件包含编译firefox的一般配置项目。
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/browser/config/mozconfig
接下来就可以checkout整个工程相关的源码树。
$ cd mozilla
$ make -f client.mk checkout MOZ_CO_PROJECT=browser
MOZ_CO_PROJECT是一个用来告诉make如何下载工程代码的变量,你也可以在自定义的.mozconfig配置文件中设置,这样就不用在命令行指定了。
最后是编写.mozconfig文件(例):
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt-static
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --disable-libxul
ac_add_options --disable-tests
下面对上面的.mozconfig文件作详细的说明:
.mozconfig包含两种类型的配置信息:
- 以mk_add_options开头的选项是传递给client.mk的参数。通常都是用来控制cvs checkout和update的。上例中指定了编译的根目录的路径。
- 以ac_add_options开头的选项是传递给configure的参数,用来控制编译过程的选项。你可以试着在mozilla目录中输入./configure --help来大概了解有些什么可用的选项。这些选项可能会有一些互斥的情况,即不能同时出现,或者在某种情况下必须出现等。比如上例子中--enable-static和--disable-shared就必须同时出现。具体可以参考mozilla上的相关文章。
配置完成后,可以简单的运行:
make -f client.mk build
来构建应用程序。
几点提示:
mozilla的编译系统很灵活,可以同时checkout和编译多个工程,具体可以参考如下文章。
如果编译browser(firefox),则最后指定--enable-static和--disable-shared,这样才能在编译后进行打包工作,如果使用--disable-static和--enable-shared是不允许打包的。
如果你需要编译一个可以用来作为嵌入(embed gecko)sdk的环境的话,可以选择编译xulrunner或者firefox,结果可能稍有不同(编译出来的库文件不太一样)。
你可以通过--enable-default-toolkit=cairo-gtk2指定GUI使用哪种控件,比如QT、gtk等,其实QT目前是不支持的,不需要费心了,推荐的GUI控件就是cairo-gtk2。
参考文章:
configuration
checkout source code