我想说:这两个多星期走得很辛苦,没有人告诉我win732位系统下VS2010+Boost_1_53_0+Qt5.2+MySql开发环境如何搭建,自己一步一步摸索,重装了无数遍系统,试了几十种方法,才艰辛地将环境搭好了。本着赠人玫瑰,手留余香地王道论坛精神,今天把方法全部倾囊而授,为的是让你们少走许多弯路,把时间放在写程序上面。
声明:安装Qt5.2.0而不是更低版本因为Qt5.2.0及其更高版本已经帮你编译好了MySql和其他一些数据库地驱动,否则你自己编译会发生很多错误。
目标:就算你是一个搭建环境的小白,我也要让你能够按照我的步骤傻子似的一步一步把环境搞定。
注意:红色部分的字要注意,很容易出错
概览:
1安装VS2010
2编译Boost_1_53_0库
3安装Qt5.2
4安装MySql
1安装VS2010
VS2010 旗舰版可用Key:YCFHQ9DWCYDKV88T2TMHG7BHP
2用VS2010编译Boost_1_53_0
第一步:下载boost,我下载的方法是从http://www.boost.org/上找最新的下载。名字叫boost_1_53_0。
第二步:在D盘(最新的boost_1_53_0编译之后大小为5G多)创建一个目录boost,拷贝进去并解压到当前文件夹。(注,这里我没有创建boost目录,直接解压的)
第三步:开始->程序->MicrosoftVisual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),打开一个控制台。
第四步:cd d:\boost\boost_1_53_0
第五步:bootstrap.bat
第六步:(1)b2--toolset=msvc-10.0 --build-type=complete stage或者(2)bjam.exe--toolset=msvc-10.0 --build-type=complete。等待执行完成。
注:我在这里第五步之后会生成了bjam.exe和b2.exe.这里我执行(1)成功,执行(2)失败。
设置环境变量:
右击计算机-》属性-》高级系统设置-》高级-》环境变量-》选择系统环境变量下面的“新建”按钮
变量名:BOOST
值:D:\developSoftware\boost_1_53_0【这是我的安装目录】
你们需要修改为你们的安装路径为你们的安装目录:,记住只需要到boost_1_53_0这个目录截止就可以。
点击系统环境变量中的"Path"环境变量,点击编辑:
在最前面添加:
D:\developSoftware\boost_1_53_0\boost;D:\developSoftware\boost_1_53_0\stage\lib;
你们按照你们自己的安装目录进行修改,注意一个是以:boost截止,一个是以lib截止
这一步的作用是为了能够寻找头文件和静态链接库文件
测试:
第一步:创建一个工程,附加包含目录为:d:\boost\boost_1_53_0;附加库目录为:d:\boost\boost_1_53_0\stage\lib。
注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径
这两步我的配置的时候是:(1)D:\boost_1_53_0 (2)D:\boost_1_53_0\stage\lib
第二步:编写代码测试。
注:如果编写的测试代码出现类似错误”无法打开包括文件:“boost/regex.hpp”: No such file or directory” 说明附件包含目录出现错误,这时要纠正包含目录。
如果在下还有incude目录,我们只需包含includes目录就加载了相关头文件,如果没有,如上加载总目录,让编译器自己找。
附加:据说在第六步的时候,如果将执行指令里面的“stage”改成”install”,则会生成include指令。
附加测试代码:
C++ Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include<iostream> #include <boost/regex.hpp> using namespace std; int main() { // 3 digits, a word, any character, 2 digits or "N/A", // a space, then the first word again boost::regex reg("\\d{3}([a-zA-Z]+).(\\d{2}|N/A)\\s\\1"); std::string correct="123Hello N/A Hello"; std::string incorrect="123Hello 12 hello"; assert(boost::regex_match(correct,reg)==true); assert(boost::regex_match(incorrect,reg)==false); cout<<"Hello Boost !"<<endl; } |
然后:
右击项目-》属性-》配置属性->C/C++->常规:附加包含目录中,编辑,加入:D:\developSoftware\boost_1_53_0
右击项目-》属性-》配置属性->连接器->输入:附加依赖项,编辑,加入:D:\developSoftware\boost_1_53_0\stage\lib\*.lib
这里你们按照自己的路径进行添加,注意一个是;boost_1_53_0结尾,一个是*.lib结尾。*.lib这里起的作用是过滤掉.dll文件,否则在接下来的
编译中会出现错误。 -》
如果输出结果为:
则表明boost库在vs2010下配置成功。
3安装Qt5.2.0
一、下载Qt5.2安装包(qt-windows-opensource)与Qt插件(Visual Studio Add-in)
Qt5.2也可以在这里下载:http://download.qt-project.org/official_releases/qt/5.2/5.2.0/.
找到对应的版本进行下载,里面包含多种不同的版本,MSVC2010、MSVC2012分别是指支持VS2010与VS2012的Qt版本,而opengl与非opengl的区别是是否支持opengl,android、ios分别是指支持android、ios平台的Qt版本。
这里我选择的版本(已标注),如下:
二、安装
先安装qt-windows-opensource,路径随意,注意不能有中文,空格
再安装Visual Studio Add-in,路径一定要用默认值,否则会出现错误
安装完成后:设置环境变量:
在系统环境变量中,新建:
变量名:QTDIR
值:D:\Qt\Qt5.2.0\5.2.0\msvc2010_opengl
你们按照你们的安装路径修改,注意最后结尾的是:msvc2010_opengl
安装完成Visual Studio Add-in之后,VS就会出现相应的Qt选项!
三、配置开发环境
这里根据自己的Qt安装路径进行选择,Path为:D:\Software\Qt\Qt5.2.0\5.2.0\msvc2010_opengl。
说明:4.8.3是我之前的版本,因为我可能安装很多个不同的版本(假设发现新版本存在很多问题,我不想再使用,换一个版本,怎么办?)。
如下,选择你想要使用的版本:
如果选择了4.8.3版本,那就必须重新下载一个Visual Studio Add-in for Qt4的插件才可以使用(原则:版本对应)。
以上配置完成之后,就可以导入或者新建Qt项目了。
导入Qt的pro项目
新建Qt项目
如下:
新建完成之后,就可以运行了!
如下:
添加环境变量
在工程目录下找到可执行程序,直接运行,会出现丢失*.dll的提示信息。
如下:
解决方法:
(1)右键计算机->属性->高级系统设置->高级->环境变量,添加环境变量PATH:D:\Software\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\bin即可。
(2)在Qt的安装目录下找到缺少的*.dll(D:\Software\Qt\Qt5.2.0\5.2.0\msvc2010_opengl\bin),将其与可执行程序放到同一目录下。
推荐:方法一。
因为Qt程序也许会很多,如果每个程序都执行方法二,那么工作量可想而知,所以推荐使用方法一。
检查Qt5.2中是否含有MySql驱动:
安装Qt5.2版本的,可以在安装目录下,pluins\sqldrivers下进行查看,面包含有MySQL驱动。
4 安装MySql
1)
- MySQL主页:http://www.mysql.com/.
(1)进入主页,选择:Downloads(GA)
如下:
(2)转到页面最下面,MySQL Community Edition (GPL),选择:Download from MySQL Developer Zone >>
如下:
(3)转到页面右上角,选择:New Releases对应的版本(这里我选择的是5.6)
如下:
(4)转到页面最下面,Other Downloads,选择对应的版本(这里我选择的是32位)
如下:
下载完成之后,进行解压,拷贝到一个指定的路径(我选择的是:D:\mysql-5.6.15-win32)。
将MySQL目录(D:\mysql-5.6.15-win32\lib)下的libmysql.dll、libmysqld.dll拷贝到D:\developSoftware\Qt\Qt5.2.0\5.2.0\msvc2010_opengl\bin目录中。
2)安装mysql-installer-community-5.7.4.0-m14.1411728256.msi
之所以在原来已经有非安装版MySql的基础上又弄安装版MySql原因是:
方面后续项目的可视化操作
下载地址:http://dev.mysql.com/downloads
方法/步骤
-
1
-
2
点击上图红框“Install MySQL Products”进入安装界面,如下图:
步骤阅读
-
3
步骤阅读
-
4
步骤阅读
-
5
在原来旧的版本当中,安装类型有3种安装类型:Typical(典型安装)、Complete(完全安装)和Custom(定制安装)。
Typical(典型安装)安装只安装MySQL服务器、mysql命令行客户端和命令行实用程序。命令行客户端和实用程序包括mysqldump、myisamchk和其它几个工具来帮助你管理MySQL服务器。
Complete(完全安装)安装将安装软件包内包含的所有组件。完全安装软件包包括的组件包括嵌入式服务器库、基准套件、支持脚本和文档。
Custom(定制安装)安装允许你完全控制你想要安装的软件包和安装路径。
而在新版本当中,选项有所不同,不过我这里默认选第一项了,其它选项请看下图:
步骤阅读
-
6
步骤阅读
-
7
点击“Execute”按钮后,可能会下载一些程序,到时你自己点击安装就行了,直到所有安装完成就OK了,如下图:
-
8
步骤阅读
-
9
网络不好的,得下一阵子呢,等着吧!当安装完了,如下图:
-
10
步骤阅读
-
11
进入服务器配置,可以选择3种服务器类型,选择哪种服务器将影响到MySQL Configuration Wizard(配置向导)对内存、硬盘和过程或使用的决策。 Developer Machine(开发机器):该选项代表典型个人用桌面工作站。假定机器上运行着多个桌面应用程序。将MySQL服务器配置成使用最少的系统资源。 Server Machine(服务器):该选项代表服务器,MySQL服务器可以同其它应用程序一起运行,例如FTP、email和web服务器。MySQL服务器配置成使用适当比例的系统资源。
Dedicated MySQL Server Machine(专用MySQL服务器):该选项代表只运行MySQL服务的服务器。假定运行没有运行其它应用程序。MySQL服务器配置成使用所有可用系统资源。
如下图:
步骤阅读
-
12
步骤阅读
-
13
点击“Next”进入系统服务Myqsl配置,如下图:
-
14
步骤阅读
-
15
我简单配置错误日志存放路径,如果不想进入日志配置,那就在“服务器配置”那里不选高级配置,如图下图:
步骤阅读
-
16
步骤阅读
步骤阅读
步骤阅读
-
17
MySQL安装完成,我们验证一下,是否可以正常使用,如下图:
-
18
-
19
步骤阅读
-
20
测数:Qt连接MySql
在你的MySql的WorkBench中另:
用户名为:root
密码:123456
新建数据库:qttest
不做这些,下面的Qt将连接不上MySql,数据库先创建名为"qttest"的原因是,下面的代码需要连接这个数据库,如果你本身没有创建,就导致一直连接不上
然后编写qt程序:
在"connection.h"中copy下面代码
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QtSql\qsqldatabase.h>
inline bool createOneConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");//设置主机地址为本地地址
db.setDatabaseName("qttest");//注意这里的数据库一定要事先在MySql中建好
db.setUserName("root");//注意这里一定要与你设置的用户名相一致
db.setPassword("123456");//注意一定要设置密码
if (!db.open()) {
qDebug() << db.lastError();
getchar();
return false;
}
return true;
}
#endif
在main.cpp中copy下面代码:
#include "test.h"
#include <QtWidgets/QApplication>
#include <QtCore\qdebug.h>
#include <QtSql\qsqldatabase.h>
#include <QtSql\qsqlquery.h>
#include <QtSql\qsqlerror.h>
#include "connection.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
if (!createOneConnection())
return 1;
QSqlQuery query;
query.exec("CREATE TABLE artist ("
"id INTEGER PRIMARY KEY, "
"name VARCHAR(40) NOT NULL, "
"country VARCHAR(40))");
query.exec("CREATE TABLE cd ("
"id INTEGER PRIMARY KEY, "
"artistid INTEGER NOT NULL, "
"title VARCHAR(40) NOT NULL, "
"year INTEGER NOT NULL)");
query.exec("CREATE TABLE track ("
"id INTEGER PRIMARY KEY, "
"cdid INTEGER NOT NULL, "
"number INTEGER NOT NULL, "
"title VARCHAR(40) NOT NULL, "
"duration INTEGER NOT NULL)");
#if 1
query.exec("INSERT INTO artist "
"VALUES (1001, 'Gluecifer', 'Norway')");
query.exec("INSERT INTO artist "
"VALUES (1002, 'The Sounds', 'Sweden')");
query.exec("INSERT INTO artist "
"VALUES (1003, 'Melvins', 'USA')");
query.exec("INSERT INTO artist "
"VALUES (1004, 'Strapping Young Lads', 'Canada')");
query.exec("INSERT INTO cd "
"VALUES (2001, 1001, 'Riding the Tiger', 1997)");
query.exec("INSERT INTO cd "
"VALUES (2002, 1001, 'Easy Living', 2002)");
query.exec("INSERT INTO cd "
"VALUES (2003, 1002, 'Living in America', 2002)");
query.exec("INSERT INTO cd "
"VALUES (2004, 1003, 'Bullhead', 1991)");
query.exec("INSERT INTO cd "
"VALUES (2005, 1003, 'Stag', 1996)");
query.exec("INSERT INTO cd "
"VALUES (2006, 1003, 'Hostile Ambient Takeover', "
"2002)");
query.exec("INSERT INTO cd "
"VALUES (2007, 1003, '26 Songs', 2003)");
query.exec("INSERT INTO cd "
"VALUES (2008, 1004, 'City', 1997)");
query.exec("INSERT INTO cd "
"VALUES (2009, 1004, 'No Sleep Till Bedtime', "
"1998)");
query.exec("INSERT INTO cd "
"VALUES (2010, 1004, 'Syl', 2003)");
query.exec("INSERT INTO track "
"VALUES (3001, 2004, 01, 'Boris', 514)");
query.exec("INSERT INTO track "
"VALUES (3002, 2004, 02, 'Anaconda', 143)");
query.exec("INSERT INTO track "
"VALUES (3003, 2004, 03, 'Ligature', 229)");
query.exec("INSERT INTO track "
"VALUES (3004, 2004, 04, 'It''s Shoved', 155)");
query.exec("INSERT INTO track "
"VALUES (3005, 2004, 05, 'Zodiac', 254)");
query.exec("INSERT INTO track "
"VALUES (3006, 2004, 06, 'If I Had An Exorcism', "
"187)");
query.exec("INSERT INTO track "
"VALUES (3007, 2004, 07, 'Your Blessed', 339)");
query.exec("INSERT INTO track "
"VALUES (3008, 2004, 08, 'Cow', 271)");
#endif
return 0;
}
然后在MySql的WorkBench的qttest数据库:右击->refresh,发现多了3张表,
哈哈,你成功了