要从源代码安装 Connector/C++,请验证您的系统是否满足第 4.1 节,“源代码安装系统先决条件”中概述的要求。
使用 CMake 来配置和构建 Connector/C++。仅支持源代码外构建,因此请创建一个用于构建的目录并切换到该目录。然后使用以下命令配置构建,其中 concpp_source
是包含 Connector/C++ 源代码的目录
cmake concpp_source
可能需要在配置命令中指定其他选项。一些例子
-
默认情况下,将使用以下安装位置
/usr/local/mysql/connector-c++-8.0
(Unix 和类 Unix 系统)
(Windows)用户主目录
/MySQL/"MySQL Connector C++ 8.0"
要显式指定安装位置,请使用
CMAKE_INSTALL_PREFIX
选项-DCMAKE_INSTALL_PREFIX=path_name
-
在 Windows 上,您可以使用
-G
和-A
选项来选择特定的生成器-G "Visual Studio 16" -A x64
(64 位构建)-G "Visual Studio 16" -A Win32
(32 位构建)
查阅 CMake 手册或检查
cmake --help
以了解您的 CMake 版本支持哪些生成器。(但是,您的 CMake 版本可能支持比实际可用于构建 Connector/C++ 更多的生成器。) -
如果需要 Boost C++ 库,请使用
WITH_BOOST
选项指定其位置-DWITH_BOOST=path_name
-
默认情况下,构建会创建动态(共享)库。要构建静态库,请启用
BUILD_STATIC
选项-DBUILD_STATIC=ON
-
默认情况下,不会构建传统的 JDBC 连接器。要将 JDBC 连接器包含在构建中,请启用
WITH_JDBC
选项-DWITH_JDBC=ON
如果您稍后配置和构建测试程序,请使用与配置 Connector/C++ 时相同的 CMake 选项来配置它们(-G
、WITH_BOOST
、BUILD_STATIC
等)。例外情况:路径名参数将有所不同,并且您不需要指定 CMAKE_INSTALL_PREFIX
。
有关 CMake 配置选项的信息,请参阅第 4.4 节,“Connector/C++ 源代码配置选项”。
使用 CMake 选项来配置和构建 Connector/C++,并使用外部源代码,您可以用它们替换当前与连接器捆绑在一起的所需的第三方依赖项。如果依赖项是外部库,则该库将动态链接到连接器。相反,连接器使用的捆绑第三方库是静态链接到它的。
使用无法动态链接到连接器的外部第三方库会导致构建失败,即使静态库可用也是如此。
支持的选项有
例如,要使用 Protobuf 的外部安装,而不是从捆绑的源代码构建它,请指定 WITH_PROTOBUF
选项并提供 CMake 可以找到替代依赖项的位置的路径名。
如果找不到外部依赖项(或不可用),则构建失败。不会尝试定位捆绑的源代码。
cmake [other_options] -DWITH_PROTOBUF=path_name_to_protobuf_install
要配置外部依赖项的标准系统范围位置,请使用字面值 system
而不是提供路径名。例如
-DWITH_SSL=system
有关 CMake 配置选项的信息,请参阅第 4.4 节,“Connector/C++ 源代码配置选项”。
外部依赖项使得使用动态链接到连接器的共享第三方库成为可能。这可能是一个优势,因为例如,您不能将连接器静态库与也链接到 Protobuf 库的应用程序一起使用。
当运行链接到连接器动态库的应用程序时,如果将连接器所依赖的第三方库放置在文件系统中连接器库的旁边,则应该能够正确找到它们。当库安装在标准系统范围的位置时,应用程序也应该可以工作。这假设 Connector/C++ 需要外部第三方依赖项版本。
除 Windows 外,当连接器库和第三方库放置在非标准位置时,应该可以运行链接到连接器动态库的应用程序,前提是在构建应用程序时将这些位置存储为运行时路径(gcc -rpath
选项)。
对于 Windows,只有在以下情况下才能运行链接到连接器共享库的应用程序:
在 Windows 系统文件夹中
与应用程序位于同一文件夹中
在
PATH
环境变量列出的文件夹中
如果应用程序链接到连接器静态库,则仍然需要在前面提到的某个位置找到所需的库。
配置 Connector/C++ 发行版后,使用以下命令构建它
cmake --build . --config build_type
--config
选项是可选的。它指定要使用的构建配置,例如 Release
或 Debug
。如果省略 --config
,则默认为 Debug
。
如果您在上述命令中指定了 --config
选项,请为后续步骤指定相同的 --config
选项,例如安装 Connector/C++ 或构建测试程序的步骤。
如果构建成功,它将在构建目录中创建连接器库。(对于 Windows,请在与为 --config
选项指定的 build_type
值同名的子目录中查找库。)
-
如果构建动态库,它们将具有以下名称
libmysqlcppconn8.so.1
(Unix)libmysqlcppconn8.3.dylib
(macOS)mysqlcppconn8-1-vs14.dll
(Windows)
-
如果构建静态库,它们将具有以下名称
libmysqlcppconn8-static.a
(Unix、macOS)mysqlcppconn8-static.lib
(Windows)
如果您启用了 WITH_JDBC
选项以在构建中包含传统的 JDBC 连接器,则会创建以下额外的库文件。
-
如果构建传统的动态库,它们将具有以下名称
libmysqlcppconn.so.7
(Unix)libmysqlcppconn.7.dylib
(macOS)mysqlcppconn-7-vs14.dll
(Windows)
-
如果构建传统的静态库,它们将具有以下名称
libmysqlcppconn-static.a
(Unix、macOS)mysqlcppconn-static.lib
(Windows)
要验证连接器功能,请构建并运行源代码发行版 testapp
目录中包含的一个或多个测试程序。创建一个要使用的目录并切换到该目录。然后发出以下命令
cmake [other_options] -DWITH_CONCPP=concpp_install concpp_source/testapp
cmake --build . --config=build_type
WITH_CONCPP
是一个仅用于配置测试应用程序的选项。 other_options
由您用于配置 Connector/C++ 本身的选项组成(-G
、WITH_BOOST
、BUILD_STATIC
等)。 concpp_source
是包含 Connector/C++ 源代码的目录,concpp_install
是安装 Connector/C++ 的目录
上述命令应该在构建位置的 run
目录中创建 devapi_test 和 xapi_test 程序。如果在配置测试程序时启用了 WITH_JDBC
,则构建还会创建 jdbc_test 程序。
在运行测试程序之前,请确保 MySQL 服务器实例正在运行并且启用了 X Plugin。最简单的方法是使用 MySQL 发行版中的 mysql-test-run.pl 脚本。对于 MySQL 8.0,默认情况下启用 X Plugin,因此请在该发行版的 mysql-test
目录中调用以下命令
perl mysql-test-run.pl --start-and-exit
该命令应该启动一个测试服务器实例,该实例启用了 X Plugin 并侦听端口 13009 而不是其标准端口(33060)。
现在您可以运行其中一个测试程序了。它们接受连接字符串参数,因此如果服务器如上所述启动,您可以像这样运行它们
run/devapi_test mysqlx://[email protected]:13009
run/xapi_test mysqlx://[email protected]:13009
连接字符串假定可以使用没有密码的 root
用户帐户,并且程序假定有一个可用的 test
模式(使用 mysql-test-run.pl 启动的服务器满足这些假设)。
要测试 jdbc_test,您需要一台 MySQL 服务器,但不需要 X Plugin。此外,连接选项必须采用 JDBC API 指定的形式。将用户名作为第二个参数传递。例如
run/jdbc_test tcp://127.0.0.1:13009 root