I am trying to build the mySQL Connector C++ from source in Visual Studio 2012 for the 64-bit architecture. I understand that it depends on some boost header files and the C connector. Running CMake produces a project file, but that project file doesn't compile because of a big list of very confusing errors which probably have to do something with the include files, and an even bigger list of warnings. The official site is of little help.
Could some one please list all the steps in successfully compiling the C++ Connector?
In order to build it you need to have the following:
- You need to have installed either the MySQL server or the MySQL C Connector.
- Have installed the Boost C++ libraries or have the source files for it. Please note that there is not need to build boost as you only need the header files.
- Have CMake installed. When installing CMake it will ask you if you want it included in the
PATH
variable, you should select yes to make it easier later to use it.
Once you have all three available, open VS2012 x64 Native Tools Command Prompt and from the source root directory of the MySQL C++ Connector you need to issue the following:
set MYSQL_DIR=c:\PROGRA~1\MySQL\MYSQLC~1.1
cmake -G "Visual Studio 11 Win64" ^
-DBOOST_ROOT:STRING=C:\Users\user\DOWNLO~1\BOOST_~1\BOOST_~1 ^
-DMYSQL_LIB_DIR:STRING=c:\PROGRA~1\MySQL\MYSQLC~1.1\LIB
devenv.com MySQLCPPCONN.sln /build Release
The first command defines the MYSQL_DIR
variable that points to the installation of the MySQL server or the MySQL C Connector.
The second command call cmake to prepare a VS project that will be 64bit. There seems to be a problem with the MYSQL_LIB_DIR
variable and it does not get generated, so we need to define it manually. MYSQL_LIB_DIR
has the value of MYSQL_DIR
ending with a \LIB
.
Third command is optional, it will build the project from command prompt without opening VS.
It is recommended that you use the DOS paths for the variables.
To do that, navigate to the directory you want to convert to DOS path and call for %I in (.) do echo %~sI
. It will give you the converted path.
It's really tough task and I've spent lot of hours figuring this out.
There are two issues here:
C++ Connector and MySQL libraries they have provided have been generated with Visual Studio 2010. Hence we can not use them as it is under VS2012 (It gives version mismatch error)
They also have not specified exact compiler options under which they have compiled these libraries. If our compiler settings are different, we'll end up in lots and lots of (especially linker related) errors.
Considering these facts, the only way is to build ourselves these libraries. Building MySQL is quick but building connector is little complicated.
Here are steps I am sharing. In my case I wanted to link these libraries statically with my project so I built these libraries accordingly. You may want to make relevant changes wherever necessary as per your need.
Before continuing with these steps, please download and install CMake on your system.
Steps to build MySQL server:
Download MySQL source. Extract them. Go in extracted folder in command prompt.
Create BLD forder
Go in BLD folder through command prompt
Run
cmake .. -G "Visual Studio 11 2012 Win64"
It will create MySQL.sln
Open MySQL.sln in Visual Studio and build only 'mysqlclient' library (as only this would be needing by application)
This will build libraries in mysql-5.6.24\BLD\libmysql\< Configuration > folder which we link in our project.
Steps to build C++ connector:
Download mysql-connector-c++ source. Extract it. Go in extracted folder in command prompt.
Create BLD forder
Go in BLD folder through command prompt
Run this command (Make sure we've built MySQL server before this, in Release and Debug mode. Also make sure we've downloaded Boost sources)
cmake .. -DMYSQL_INCLUDE_DIR="..\..\mysql-5.6.24\include" -DMYSQL_LIB_DIR:STRING="..\mysql-5.6.24\BLD\libmysql\Release" -DBOOST_ROOT:STRING="..\Boost\boost_1_54_0" -DMYSQL_CLIENT_STATIC_LINKING=1 -G "Visual Studio 11 2012 Win64"
It will create MYSQLCPPCONN.sln
Open MYSQLCPPCONN.sln in Visual Studio and make changes to 'mysqlcppconn-static' project:
A. Under C/C++ -> General -> Additional Include Directories put this (for All Configurations)
nativeapi;..\;..\..\;..\cppconn;..\..\cppconn;..\..\..\mysql-5.6.24\include;..\..\..\mysql-5.6.24\BLD\include;..\..\..\Boost\boost_1_54_0
B. In Code Genaration, change Runtime Library to Multithreaded (Debug or non-Debug depends on configuration) and NOT DLL
C. Under Librarian -> All Options keep "Additional Options" and "Ignore Specific Default Libraries" to blank (for All Configurations)
D. Under Librarian -> General keep "Ignore Specific Default Libraries" to blank (for All Configurations)
Build only 'mysqlcppconn-static' library project (as only this would be needing by application to connect to MySQL server)
This would generate library in mysql-connector-c++-1.1.5\BLD\driver\< Configuration > folder which we link in our project.
来源:https://stackoverflow.com/questions/20281360/mysql-connector-c-64bit-build-from-source-in-visual-studio-2012