我正在尝试从 64位架构的 Visual Studio 2012 中的源代码构建 mySQL Connector C ++ 。 我了解这取决于一些 boost 标头文件和 C连接器。 运行 CMake 会生成一个项目文件,但该项目文件无法编译,因为可能需要对包含文件执行一些非常混乱的错误,以及更大的警告列表。官方网站没什么帮助。
有人可以列出成功编译C ++连接器的所有步骤吗?
答案 0 :(得分:5)
为了构建它,您需要具备以下条件:
PATH
变量中,您应该选择“是”以便以后更轻松地使用它。如果您有三个可用,请打开 VS2012 x64 Native Tools命令提示符,然后从MySQL C ++ Connector的源根目录中发出以下命令:
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
第一个命令定义MYSQL_DIR
变量,指向安装MySQL服务器或MySQL C连接器。
第二个命令调用cmake来准备一个64位的VS项目。 MYSQL_LIB_DIR
变量似乎存在问题而且没有生成,所以我们需要手动定义它。 MYSQL_LIB_DIR
的值MYSQL_DIR
以\LIB
结尾。
第三个命令是可选的,它将在不打开VS的情况下从命令提示符构建项目。
建议您使用DOS路径作为变量。
为此,请导航到要转换为DOS路径的目录并调用for %I in (.) do echo %~sI
。它会为您提供转换后的路径。
答案 1 :(得分:4)
这是一项非常艰巨的任务,我花了很多时间搞清楚这一点。
这里有两个问题:
他们提供的C ++连接器和MySQL库是使用Visual Studio 2010生成的。因此我们无法在VS2012下使用它们(它会出现版本不匹配错误)
他们还没有指定编译这些库的确切编译器选项。如果我们的编译器设置不同,我们会遇到很多(尤其是与链接器相关的)错误。
考虑到这些事实,唯一的方法就是建立自己的这些库。构建MySQL很快,但构建连接器并不复杂。
以下是我分享的步骤。在我的情况下,我想静态地将这些库与我的项目链接,因此我相应地构建了这些库。您可能希望根据需要在必要时进行相关更改。
在继续执行这些步骤之前,请在您的系统上下载并安装CMake。
构建MySQL服务器的步骤:
下载MySQL源代码。提取它们。在命令提示符下进入解压缩的文件夹。
创建BLD forder
通过命令提示符进入BLD文件夹
运行
cmake .. -G "Visual Studio 11 2012 Win64"
它将创建MySQL.sln
在Visual Studio中打开MySQL.sln并仅构建' mysqlclient'库(因为应用程序只需要这个)
这将在mysql-5.6.24 \ BLD \ libmysql \<中构建库配置>我们在项目中链接的文件夹。
构建C ++连接器的步骤:
下载mysql-connector-c ++源代码。提取它。在命令提示符下进入解压缩的文件夹。
创建BLD forder
通过命令提示符进入BLD文件夹
运行此命令(确保在此之前我们已经在发布和调试模式下构建了MySQL服务器。还要确保我们已经下载了Boost源代码)
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"
它将创建MYSQLCPPCONN.sln
在Visual Studio中打开MYSQLCPPCONN.sln并更改为' mysqlcppconn-static'项目:
一个。在C / C ++下 - >一般 - >其他包含目录(适用于所有配置)
nativeapi;..\;..\..\;..\cppconn;..\..\cppconn;..\..\..\mysql-5.6.24\include;..\..\..\mysql-5.6.24\BLD\include;..\..\..\Boost\boost_1_54_0
B中。在Code Genaration中,将运行时库更改为多线程(调试或非调试取决于配置)和NOT DLL
℃。在图书馆员之下 - >所有选项都保留"其他选项"和"忽略特定的默认库"为空(对于所有配置)
d。在图书馆员之下 - >一般保持"忽略特定的默认库"空白(适用于所有配置)
仅限构建' mysqlcppconn-static'库项目(因为应用程序只需要连接到MySQL服务器)
这将在mysql-connector-c ++ - 1.1.5 \ BLD \ driver \<中生成库配置>我们在项目中链接的文件夹。