使用Visual Studio编译MYSQL CONNECTOR C/C++(MYSQLCPPCONN)

所需工具

[CMAKE](https://cmake.org/)
[BOOST](http://www.boost.org/)
[MySQL Community Server](http://dev.mysql.com/downloads/mysql/) 安装版绿色版都行
[MySQL Connector/C](http://dev.mysql.com/downloads/connector/c/) 下载源码
[MySQL Connector/C++](http://dev.mysql.com/downloads/connector/cpp/) 下载源码
Visual Studio 不说了, 没它拿啥编译

编译代码

1. 安装MySQL Server, 最好可以正常跑起来
2. 安装CMAKE
3. 编译Connector/C(因为Connector/C++依赖Connector/C)
   解压缩源码, 比如释放到F盘, 并改名为mysqlc(纯粹为了方便说明)
   打开CMAKE-GUI(在安装目录里找), Source Path选择"F:\mysqlc", Build Path选择"F:\buildc"
   Build Path可以和Source Path一样
   点Configure, 选择编译器与平台, 点Finish, 出现"Configuring done"后点Generate
   出现"Generating done"后, CMAKE部分完事儿
   在"F:\buildc"里找项目文件(sln), 打开, 编译(注意Debug与Release), C组件搞定
4. 编译Connector/C++
   解压缩, 改名mysqlcpp
   打开CMAKE-GUI, 目录选"F:\mysqlcpp"和"F:\buildcpp"
   点Configure, 出现错误, 需要BOOST, 解压到"F:\boost"
   CMAKE界面点击"Add Entry"(添加环境变量)
   Name="BOOST_ROOT", Type="String", Value="F:\boost", OK
   再点Configure, 出错, 找不到"mysql.h", 打开FindMySQL.cmake查看内容, 再添加环境变量
   Name="MYSQL_INCLUDE_DIR", Type="Path", Value="F:\mysqlc\include", OK
   再点Configure, 出错, 缺"MYSQL_LIB", 注意, 这里决定动态链接还是静态链接
   若静态链接, 添加环境变量, Name="MYSQLCLIENT_STATIC_LINKING", Type=BOOL, Value打钩
   再添加环境变量, Name="MYSQL_LIB", Type="FILEPATH", 
   Value="F:\buildc\libmysql\Release\mysqlclient.lib"(静态链接)
   或者 "F:\buildc\libmysql\Release\libmysql.lib"(动态链接)
   再点Configure, 出错, 需要MySQL Server版本
   再添加环境变量, Name="MYSQL_VERSION", Type="String", Value="x.x.x"(MySQL Server版本号)
   再点Configure, 可以安心等一会儿了, 出现"Configuring done"再点Generate
   完事儿后就可以编译去了
   编译时还会出错(有完没完?), 缺文件
   从MySQL Server的安装目录的include里找my_config.h/mysql_version.h/mysqld_error.h三个文件
   复制到"F:\mysqlc\include"中
   继续编译, 出错(要疯了), "MYSQL_TYPE_JSON"未定义, 看源码得知这东西应该是个枚举类型
   但值是多少? 搜索引擎, 搜索时带上另一个枚举的名字
   比如我这样搜索"MYSQL_TYPE_JSON MYSQL_TYPE_NEWDECIMAL"
   得知"MYSQL_TYPE_JSON=245", 加进去
   继续编译, 终于大功告成, 编译成功.

总结

编译Connector/C很简单, 几步就搞定.
而编译Connector/C++就比较坎坷了, 熟练后事先添加环境变量会好很多
BOOST_ROOT String
MYSQL_INCLUDE_DIR Path
MYSQL_LIB FilePath
MYSQLCLIENT_STATIC_LINKING BOOL
MYSQL_VERSION String
注: Connector/C++依赖MYSQL的SDK, 尽量使用Connector/C带的文件, 没有再去MySQL Server里找文件
编译时注意Debug/Release, MD/MT等参数, 要保持一致

2016-3-10 13:12:01

CMAKE 3.5.0 非安装板
BOOST 1.60.0
MySQL Community Server 5.7.11 非安装版
MySQL Connector/C 6.1.6
MySQL Connector/C++ 1.1.7
Visual Studio 2010

你可能感兴趣的:(mysql,Visual,Studio)