qt-4.8 vs2010 ssl 编译过程

编译动态库

  • 编译 openssl

    • 将 openssl 压缩包解压到 e:\code\lib
    • 环境变量 PATH 中不包含 cygwin,mingw
    • 打开 vs2010 命令行窗口
    cd e:\code\lib\openssl
    perl configure VC-WIN32
    ms\do_ms
    nmake -f ms\ntdll.mak
    
  • 解压源代码 qt-everywhere-opensource-src-4.8.4.tar 到 D:\qt\4.8.4-shared-vs2010 目录
  • 修改编译参数

    • 修改编译选项(D:/qt/4.8.4/mkspecs/win32-msvc2010/qmake.conf):
    QMAKE_CFLAGS            = -nologo -Zm200 -Zc:wchar_t /EHsc
    QMAKE_CFLAGS_RELEASE    = -O2 -Os -MD
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -Os -MD -Zi
    
    • 修改链接选项
    QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO /OPT:REF /OPT:ICF
    QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG /OPT:REF /OPT:ICF
    
    • 修改错误代码(编译错误)

    DefaultLocalizationStrategy.cpp:327,将“<selection>”修改成\”<selection>\”

  • 启动 Visual Studio 2005 Command Prompt

    • 进入目录 D:\qt
    • 执行配置命令:
    configure.exe -debug-and-release -fast -confirm-license -opensource -no-qt3support -platform win32-msvc2005 -no-dsp -vcproj -nomake examples -nomake demos -nomake translations -openssl -I E:\code\lib\openssl\inc32 -L E:\code\lib\openssl\out32dll
    configure.exe -debug-and-release -fast -confirm-license -opensource -no-qt3support -platform win32-msvc2010 -no-dsp -vcproj -nomake examples -nomake demos -nomake translations -openssl -I E:\code\lib\openssl\inc32 -L E:\code\lib\openssl\out32dll
    
    • 执行编译命令:
    nmake && nmake install
    
  • 创建 qt\bin\qt.conf
[paths]
Prefix = ..
  • 清理中间文件
    • 备份编译目录为 4.8.4-shared-vs2010.build
    • nmake confclean 注意 目录 4.8.4-shared-vs2010 名称不能修改
    • 利用 beyondcompare,从编译备份目录中恢复所有的 vc80.pdb 文件
    • 清除重复的 DLL 将 qt/lib 目录中的 DLL 全部删除
    • 清除多余的帮助文档首先要运行 qt/bin/assistant.exe,以便更新 qt/doc/pch;然后删除 qt/doc/src 和 qt/doc/html
  • 打包成 7z,大约 200 多 M

静态编译不同点:

  • 编译选项,不依赖 C/C++库

修改 mkspecs/win32-msvc2005/qmake.conf

QMAKE_CFLAGS_RELEASE    = -O2 -Os -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -Os -MT -Zi
QMAKE_CFLAGS_DEBUG  = -Zi -MTd
  • congifure 加上 -static
configure.exe -debug-and-release -fast -confirm-license -opensource -no-qt3support -platform win32-msvc2005 -no-dsp -vcproj -nomake examples -nomake demos -nomake translations -static -openssl -I E:\code\lib\openssl\inc32 -L E:\code\lib\openssl\out32dll
configure.exe -debug-and-release -fast -confirm-license -opensource -no-qt3support -platform win32-msvc2010 -no-dsp -vcproj -nomake examples -nomake demos -nomake translations -static -openssl -I E:\code\lib\openssl\inc32 -L E:\code\lib\openssl\out32dll