从源码用Visual Studio编译安装Qt

〇、机器配置

Lenovo ThinkPad T61 7663MU2 CPU: Intel Core 2 Duo  T8100,2.10 GHz RAM: 1 GB + 2 GB, 677 MHz

一、系统环境

Windows Vista Ultimate 32bit ENU Visual Studio 2008 Professional ENU

二、文件准备

Qt 4.5.2源码: http://get.qtsoftware.com/qt/source/qt-win-opensource-src-4.5.2.zip

Visual Studio add-in: http://www.qtsoftware.com/downloads/visual-studio-add-in

三、开始安装

1、解压qt-win-opensource-src-4.5.2.zip到D:\Documents\Qt\4.5.2-msvc2008(可自定义,但路径中不能有空格)。

2、看D:\Documents\Qt\4.5.2-msvc2008目录下的README和INSTALL(建议用WordPad而不是NotePad来看)。

3、把D:\Documents\Qt\4.5.2-msvc2008\bin加到PATH环境变量里(建议放在第一)。INSTALL里说这一步是建立和使用Qt需要的(In order to build and use Qt),我是执行了第4步后才改的环境变量,所以这一步可能不影响安装,只是以后编译和运行Qt程序需要。

4、打开Visual Studio 2008 Command Prompt(用Vista开始菜单的搜索功能很容易找到),因为需要有D:\Documents\Qt\4.5.2-msvc2008目录的写权限,所以必要时应以管理员身份打开Visual Studio 2008 Command Prompt。

5、用Visual Studio 2008 Command Prompt,依次执行D:cd Documents\Qt\4.5.2-msvc2008后,就进入了D:\Documents\Qt\4.5.2-msvc2008目录。

6、执行configure –help,看看有哪些参数可用。

7、执行configure –debug-and-release(参数可自定义),生成Makefile文件,在我电脑上用了十几分钟。

8、执行nmake,进行编译,花了约三个小时。

四、Qt与Visual Studio集成

1、安装Visual Studio add-in。

2、启动Visual Studio,选择菜单Qt->Qt Options,在Qt Versions选项卡中点Add,路径用D:\Documents\Qt\4.5.2-msvc2008,名字自动补全了。

五、测试范例

1、新建Project->Qt Project->Qt Application,名为HelloQt。

2、把没有用的*.h和*.cpp删除,在main.cpp中写入
1 #include <QApplication>
2 #include <QLabel>
3 int main(int argc, char *argv[])
4 {
5     QApplication app(argc, argv);
6     QLabel *label=new QLabel(“Hello Qt!”);
7     label->show();
8     return app.exec();
9 }

3、调试成功。

4、Release,到D:\Documents\Visual Studio 2008\Projects\HelloQt\Release目录下把程序找出来。

六、发布程序

由于程序要调用某些动态库,所以初次发布时要把需要的动态库也加上。

1、依赖Microsoft Visual C++ 2008 SP1 Redistributable Package。

2、依赖D:\Documents\Qt\4.5.2-msvc2008\bin下的某些库。

可以用Dependency Walker Tool来寻找依赖的库。

在全新安装的Windows XP Professional with Service Pack 3上测试通过。

Leave a Reply

Your e-mail address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.