1、从http://www.qtcentre.org/下载QT源代码,注意是源代码。我下载到的是QT4.5.1版,文件名为qt-win-opensource-src-4.5.1.zip;
2、解压,注意不要解压路径不要含有空格或中文,我把它解压到了d:\qt451里,准备一个存放编译后“成品”的文件夹,我准备放在d:\qt451\static里;
3、把QT源码里的“mkspecs” 文件夹复制到准备存放“成品”的地方,比如我的就是把d:\qt451\qt-win-opensource-src-4.5.1\mkspecs复 制到d:\qt451\static里;
4、用记事本或其它编辑器打开D:\qt451\static\mkspecs\win32-msvc2005\qmake.conf(注 意VC版本号),按需要修改:
1) 如果不希望编译出来的DLL或EXE链接到VC运行时库,就把-MD改成-MT,把-MDd改成-MTd(查找替换)。
2) [可选]如 果做了上一步,那么就不需要嵌入manifest了,去掉CONFIG+= 后面的embed_manifest_dll embed_manifest_exe。
3) VC默认是“将wchar_t 视为内置类型”的,所以建议去掉-Zc:wchar_t-, 否则以后用到一些与wchar_t有关的函数(如fromWCharArray)时,就要在项目属性里设置“将wchar_t视为内置类型”为No了)。
4) 进入“Visual Studio 2005 命令提示”,其它版本的VC也一样。
5) 进入解压的地方,比如我的: cd d:\qt451\qt-win-opensource-src-4.5.1。(小提示,在控制台里输入前几个字符再按tab 键,可以自动填充路径、文件名,MS在向Linux Shell学习?)
6) 键入命令configure -prefix d:\qt451\static -debug-and-release -static -opensource -no-qt3support -no-dbus -no-phonon -no-webkit -qt-gif -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg
7) 输入configure -help可以显示所有选项的帮助信息,上面是我用的选项,解释一下:
   -prefix 路径名 编译后的安装路径
   -debug-and-release 编译Debug和Release版本
   -static 编译静态库,如果不指定,默认为编译成DLL
   -opensource 使用LGPL协议,如果不指定也行,configure运行后会问的
   -no-qt3support 不用编译与QT3兼容的一些废弃函数,如果你比较熟悉QT3,还是去掉它吧
   -no-dbus 不用链接到DBus库,这个库偶好像在Linux里看到过,Windows里不用。
   -no-phonon 同上,不要链接
   -no-webkit 是否编译Web相关的一些QT子库,加上这个可以省不少编译时间,就看你是否准备用这些库了。
   -qt-gif 使用QT自带的gif库
   -qt-zlib 使用QT自带的zlib库
   -qt-libpng 使用QT自带的libpng库
   -qt-libmng 使用QT自带的libmng库
   -qt-libtiff 使用QT自带的libtiff库
   -qt-libjpeg 使用QT自带的libjpeg库
   configure可能要花几分钟时间,成功后再输入nmake开 始编译,编译会花去大概1小时(和配置有关啦,我是以我的老爷机为参考的)。
8) 输入nmake install
   如果没出错的话,“QT成品”就已经在我们之前建立的成品路径里了(我的是d:\qt451\static)
 
VC只需要成品路径里的东东就够了,如果你想,可以删除解压的那些源代码省点空间。
测试是否成功:打开VC -> 新建项目 -> 设置项目属性 -> 配置属性->C/C++->常规->附加包含目录:D:\qt451\ static\include -> 配置属性->C/C++->代码生成->运行时库:多线程调试(/MTd),这条依据你当时修改qmake.conf的情况决定 -> 配置属性->链接器->常规->附加库目录:d:\qt451\static\ lib -> 配置属性->链接器->输入->附加依赖项:qtmaind.lib QtCored4.lib QtGuid4.lib,如果要编译Release,把后面的d去掉。
 
代码:
#include <Qt/QtGui>
int APIENTRY _tWinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
       LPTSTR    lpCmdLine,
       int       nCmdShow)
{
QApplication app(__argc, __argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();
}
 
注:如果编译的是动态库,那么要把QT成品里的bin目录加入path系统变量,或者把这里用到的DLL复制到与你的程序相同的目录里,一般是 QtCore4.dll和QtGui4.dll(Debug版为QtCored4.dll和QtGuid4.dll),依你使用的子库而定。

QT库在Windows上的编译的更多相关文章

  1. netcdf源码在windows上的编译

    作者:朱金灿 来源:http://blog.csdn.net/clever101 今天搞搞netcdf源码在windows上的编译,折腾了半天,算是搞成了,特地记录一下过程.我的目标是要生成netcd ...

  2. 判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库

    判断OpenCV是否为共享库,Windows基于CMake编译Caffe需要opencv共享库 TLDR 只考虑windows下opencv预编译包的情况. 对于opencv2.4.x系列,cmake ...

  3. 【Qt开发】Qt Creator在Windows上的调试器安装与配置

    Qt Creator在Windows上的调试器安装与配置 如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试 ...

  4. Windows上成功编译CoreCLR源代码

    昨天得知微软在GitHub上发布CoreCLR的源代码之后,立马从GitHub上签出代码,并尝试在Windows Server 2012上进行编译. 参考CoreCLR的开发者指南(Developer ...

  5. Windows上快速编译caffe CPU版本

    windows上快速安装配置Caffe的 cpu_only环境. 一:安装环境: 1.windows10: 2.Visual Studio2013: 3.Caffe版本:http://github.c ...

  6. 在Windows上一键编译各种版本的Protobuf

    所需工具 : cmake  for  windows 和  git for windows 原理:protobuf 是google的一个开源项目,其源代码在github上可以下载到,并且源码都采用cm ...

  7. 在windows上一键编译各种版本的protobuf(2017-12-05修改)

    所需工具 : cmake  for  windows 和  git for windows 原理:protobuf 是google的一个开源项目,其源代码在github上可以下载到,并且源码都采用cm ...

  8. boost库在windows下的编译和使用

    因为跨平台的原因,现在要使用到boost库,boost库非常大,现在处于摸索阶段. 首先来说boost库在window下的安装和使用. 一.下载 首先从boost官方主页http://www.boos ...

  9. Windows 上静态编译 Libevent 2.0.10 并实现一个简单 HTTP 服务器(无数截图)

    [文章作者:张宴 本文版本:v1.0 最后修改:2011.03.30 转载请注明原文链接:http://blog.s135.com/libevent_windows/] 本文介绍了如何在 Window ...

随机推荐

  1. asyncio结合线程池

    #使用多线程:在协程中集成阻塞io import asyncio from concurrent.futures import ThreadPoolExecutor import socket fro ...

  2. apache+svn+ldap集成

    apache+svn搭建方式如下:http://www.cnblogs.com/uglyliu/p/6914056.html SVN和ldap集成,我用的方式只需要更改 /etc/http/conf. ...

  3. 【BZOJ5010】【FJOI2017】矩阵填数 [状压DP]

    矩阵填数 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 给定一个 h*w 的矩阵,矩阵的行 ...

  4. 「6月雅礼集训 2017 Day11」delight

    [题目大意] 有$n$天,每天能吃饭.睡觉.什么事也不干 每天吃饭的愉悦值为$e_i$,睡觉的愉悦值为$s_i$,什么都不干愉悦值为0. 要求每连续$k$天都要有至少$E$天吃饭,$S$天睡觉. 求最 ...

  5. 【POJ】2892 Tunnel Warfare

    [算法]平衡树(treap) [题解]treap知识见数据结构 在POJ把语言从G++换成C++就过了……??? #include<cstdio> #include<algorith ...

  6. MySQL增删改查之查询

    (7)范围查询select * from car where price>40 and price<60   --查询价格在40-60之间的select * from car where ...

  7. JS对象操作

    一.String常用操作 1.截取 substr(start,length) //返回从指定位置开始的指定长度的字符串. substring(start,end) //返回两个指定的位置之间的字符串. ...

  8. 【HNOI】五彩斑斓 模拟

    [题目描述] 给定一个n*m的矩阵,矩阵的某些位置有一个颜色(可以没有颜色,即为0),现在你可以将矩阵的某一行或者某一列染成同一种颜色,问最少用多少步能达到目标矩阵的染色方案,输出最少步数和方案. [ ...

  9. javascript语言中的一等公民-函数

    简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作 ...

  10. hdu 1253 胜利大逃亡(简单题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目大意:在所给的时间能顺利离开城堡. #include <iostream> #i ...