• 12905阅读
  • 4回复

Gecko的嵌入QT4.3.0的开发得第一步:FireFox在win环境下的编译 [复制链接]

上一主题 下一主题
离线larntin
 
只看楼主 倒序阅读 楼主  发表于: 2007-08-02
— 本帖被 XChinux 设置为精华(2008-09-21) —
由于比较忙,有一段时间没有来QTCN了,最近在看Gecko嵌入第三方应用程序的开发,已经突破了第一道关卡,FF2.0.0.5在Windows的编译部分,正准备研究FF下面winEmbed的例子的时候,发现是VC编译的(我使用的vs2003),在自己建立win控制台工程的基础上一步一步添加文件编译选项还是未能通过,网上也有人说用VC只能编译通过连接不成功,看到这个贴

http://www.qobject.com/htm_data/46/0706/3726.html

于是就把自己编译FireFox的过程贴出来,供感兴趣的朋友一起研究。
如果有错请指出,欢迎交流。

方法一:
(a)使用Cygwin编译(下载地址:http://www.cygwin.com/是一个网络安装客户端,选择好你要下载的文件)。

编译需要以下这些文件:
ash
coreutils
diffutils
findutils
grep
sed
gawk
unzip
zip
perl
gawk
make
patchutils
最好一次选全。

(b) 将C:\cygwin\bin\linker.exe改名为glinker.exe
    在系统的环境变量里添加MOZ_TOOLS = C:\moztools
    把 c:\cygwin\bin 放在 c:\windows\system32 之前
    在PATH加上%MOZ_TOOLS%\bin一句

(c)编译的过程
    打开C:\cygwin\Cygwin.bat文件添加如下代码:
  1. @echo off
  2. rem --- 基本的设置
  3. SET MOZ_TOOLS=C:\moztools
  4. SET GLIB_PREFIX=C:\moztools
  5. SET LIBIDL_PREFIX=C:\moztools
  6. SET MINGWBASE=C:\Dev-Cpp
  7. SET CYGWINBASE=C:\cygwin
  8. SET INCLUDE=
  9. SET LIB=
  10. SET PATH=C:\;C:\windows\system32;C:\windows;C:\windows\system32\wbem
  11. rem --- 设置Cygwin路径
  12. SET PATH=%CYGWINBASE%\bin;%PATH%
  13. rem --- 掉用另一个bat文件,设置 VC7 编译环境变量
  14. call "C:\cygwin\guess-msvc.bat"
  15. if "%VC71DIR%"=="" (
  16.     ECHO "Microsoft Visual C++ version 7.1 was not found. Exiting."
  17.     pause
  18.     EXIT /B 1
  19. )
  20. call "%VC71DIR%\Bin\vcvars32.bat"
  21. rem --- 添加 glib/libidl
  22. SET PATH=%PATH%;%GLIB_PREFIX%;%GLIB_PREFIX%\bin
  23. SET INCLUDE=%GLIB_PREFIX%\include;%INCLUDE%;%MINGWBASE%\include
  24. SET LIB=%GLIB_PREFIX%\lib;%LIB%
  25. rem -- moztools 添加在 glib/libIDL 之后
  26. SET PATH=%PATH%;%MOZ_TOOLS%\bin
  27. rem – bat文件中原来的内容
  28. C:
  29. chdir C:\cygwin\bin
  30. bash --login –i


guess-msvc.bat文件内容:
  1. REM -*- Mode: fundamental; tab-width: 8; indent-tabs-mode: 1 -*-
  2. @ECHO OFF
  3. set CYGWIN=
  4. if not defined MOZ_NO_RESET_PATH (
  5.     set PATH=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\Wbem
  6. )
  7. SET INCLUDE=
  8. SET LIB=
  9. SET MSVCROOTKEY=HKLM\SOFTWARE\Microsoft\VisualStudio
  10. SET MSVC6KEY=%MSVCROOTKEY%\6.0\Setup\Microsoft Visual C++
  11. SET MSVC71KEY=%MSVCROOTKEY%\7.1\Setup\VC
  12. SET MSVC8KEY=%MSVCROOTKEY%\8.0\Setup\VC
  13. SET MSVC8EXPRESSKEY=HKLM\SOFTWARE\Microsoft\VCExpress\8.0\Setup\VC
  14. REM First see if we can find MSVC, then set the variable
  15. REM NOTE: delims=<tab><space>
  16. REM NOTE: run the initial REQ QUERY outside of the if() to set ERRORLEVEL correctly
  17. REG QUERY "%MSVC6KEY%" /v ProductDir >nul 2>nul
  18. if "%VC6DIR%"=="" (
  19.   IF %ERRORLEVEL% EQU 0 (
  20.     FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "%MSVC6KEY%" /v ProductDir') DO SET VC6DIR=%%B
  21.   )
  22. )
  23. REG QUERY "%MSVC71KEY%" /v ProductDir >nul 2>nul
  24. if "%VC71DIR%"=="" (
  25.   IF %ERRORLEVEL% EQU 0 (
  26.     FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "%MSVC71KEY%" /v ProductDir') DO SET VC71DIR=%%B
  27.   )
  28. )
  29. REG QUERY "%MSVC8KEY%" /v ProductDir >nul 2>nul
  30. if "%VC8DIR%"=="" (
  31.   IF %ERRORLEVEL% EQU 0 (
  32.     FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "%MSVC8KEY%" /v ProductDir') DO SET VC8DIR=%%B
  33.   )
  34. )
  35. REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir >nul 2>nul
  36. if "%VC8EXPRESSDIR%"=="" (
  37.   IF %ERRORLEVEL% EQU 0 (
  38.     FOR /F "tokens=2* delims=    " %%A IN ('REG QUERY "%MSVC8EXPRESSKEY%" /v ProductDir') DO SET VC8EXPRESSDIR=%%B
  39.   )
  40. )
  41. REM Look for Installed SDKs:
  42. SET SDKROOTKEY=HKLM\SOFTWARE\Microsoft\MicrosoftSDK\InstalledSDKs
  43. SET SDK2003SP1KEY=%SDKROOTKEY%\8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3
  44. SET SDK2003SP2KEY=%SDKROOTKEY%\D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1
  45. REG QUERY "%SDK2003SP2KEY%" /v "Install Dir" >nul 2>nul
  46. if "%SDKDIR%"=="" (
  47.   IF %ERRORLEVEL% EQU 0 (
  48.     FOR /F "tokens=3* delims=    " %%A IN ('REG QUERY "%SDK2003SP2KEY%" /v "Install Dir"') DO SET SDKDIR=%%B
  49.   )
  50. )
  51. REG QUERY "%SDK2003SP1KEY%" /v "Install Dir" >nul 2>nul
  52. if "%SDKDIR%"=="" (
  53.   IF %ERRORLEVEL% EQU 0 (
  54.     FOR /F "tokens=3* delims=    " %%A IN ('REG QUERY "%SDK2003SP1KEY%" /v "Install Dir"') DO SET SDKDIR=%%B
  55.   )
  56. )
  57. ECHO Visual C++ 6 directory: %VC6DIR%
  58. ECHO Visual C++ 7.1 directory: %VC71DIR%
  59. ECHO Visual C++ 8 directory: %VC8DIR%
  60. ECHO Visual C++ 8 Express directory: %VC8EXPRESSDIR%
  61. ECHO SDK directory: %SDKDIR%


    进入mozilla的目录输入./configure –enable-application=browser –disable-installer

    成功之后就make

                    注意:但这里编译快结束的时候会出现错误,不知道为什么,如果你知道请指出。

方法二:
从这里下载http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.1.exe
默认安装在C:/mozilla-build下

    进入C:\mozilla-build执行start-msvc71.bat
    输入configure –enable-application=browser
    等configure成功之后,输入make
    等大约30-60分钟后编译成功
    进入C:\mozilla\dist\bin执行firefox.exe
本站的FTP:ftp://503.mygis.org
用户名:qtcnupload
密码:qtcn.org
离线XChinux

只看该作者 1楼 发表于: 2007-08-02
去年想搞这个的,由那个Firefox源码中自带的qtembed来改,后来发现这个项目早就停止了,就没再改,暂且用了IE。
如果能在Qt中搞定嵌入Gecko的话,那最好不过了。可惜我这里缺少VC.NET的开发环境,郁闷,连PSDK都要验证,下载了却安装不上。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线larntin
只看该作者 2楼 发表于: 2007-08-02
Firefox源码中默认带的是VC的例子,而且还编译不过(这是最郁闷的),但是用make就可以通过。

不过基于这种现象,我准备看Makefile的写法了,干脆用make编译算了。

不知道国内有没有这样的开发先例啊。。。。。。
本站的FTP:ftp://503.mygis.org
用户名:qtcnupload
密码:qtcn.org
离线XChinux

只看该作者 3楼 发表于: 2008-07-18
现在可以用webkit了
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yaolixing

只看该作者 4楼 发表于: 2017-08-18
他山界面专干gecko嵌入
快速回复
限100 字节
 
上一个 下一个