2.4.3 从源安装连接器/C++

要从源安装 Connector/C++,请验证您的系统是否满足 第 2.4.1 节“源安装系统先决条件”中概述的要求。

配置连接器/C++

使用CMake配置和构建连接器/C++。仅支持源外构建,因此创建一个用于构建的目录并将位置更改到其中。然后使用此命令配置构建,其中 concpp_source包含 Connector/C++ 源代码的目录:

cmake concpp_source

可能需要在配置命令中指定其他选项。一些例子:

  • 默认情况下,使用这些安装位置:

    • /usr/local/mysql/connector-c++-8.0 (Unix 和类 Unix 系统)

    • User_home/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版本可能支持比实际可用于构建连接器/C++ 的生成器更多的生成器。)

  • 如果需要 Boost C++ 库,请使用 WITH_BOOST选项指定它们的位置:

    -DWITH_BOOST=path_name
  • 默认情况下,构建会创建动态(共享)库。要构建静态库,请启用该 BUILD_STATIC选项:

    -DBUILD_STATIC=ON
  • 默认情况下,不会构建旧版 JDBC 连接器。要在构建中包含 JDBC 连接器,请启用该 WITH_JDBC选项:

    -DWITH_JDBC=ON
笔记

如果您稍后配置和构建测试程序,请使用相同的CMake选项来配置它们,就像您用来配置 Connector/C++ 的选项(-GWITH_BOOSTBUILD_STATIC等等)。例外:路径名参数会有所不同,您无需指定CMAKE_INSTALL_PREFIX.

有关CMake配置选项的信息,请参阅 第 2.4.4 节,“连接器/C++ 源配置选项”

指定外部依赖

使用CMake选项使用外部源配置和构建连接器/C++,您可以用外部源替换当前与连接器捆绑在一起的所需第三方依赖项。如果依赖项是外部库,则该库会动态链接到连接器。相反,连接器使用的捆绑第三方库是静态链接到它的。

笔记

使用无法动态链接到连接器的外部第三方库会导致构建失败,即使静态库可用也是如此。

支持的选项是:

例如,要使用 Protobuf 的外部安装,而不是从捆绑源构建它,请指定 选项并提供CMake可以找到替代依赖 WITH_PROTOBUF项的位置的路径名。

笔记

如果找不到外部依赖项(或不可用),则构建失败。不会尝试定位捆绑源。

cmake [other_options] -DWITH_PROTOBUF=path_name_to_protobuf_install

要为外部依赖项配置标准的系统范围位置,请使用文字值system 而不是提供路径名。例如:

-DWITH_SSL=system

有关CMake配置选项的信息,请参阅 第 2.4.4 节,“连接器/C++ 源配置选项”

外部依赖项使使用动态链接到连接器的共享第三方库成为可能。这可能是一个优势,因为例如,您不能将连接器静态库用于也链接到 Protobuf 库的应用程序。

在运行链接到连接器动态库的应用程序时,如果将连接器依赖的第三方库放在连接器库旁边的文件系统中,则应该可以正确找到它们。当库安装在标准的系统范围位置时,该应用程序也应该可以工作。这假定外部第三方依赖项版本是 Connector/C++ 所期望的。

除 Windows 外,当连接器库和第三方库位于非标准位置时,应该可以运行链接到连接器动态库的应用程序,前提是这些位置在构建应用程序时存储为运行时路径(gcc -rpath选项)。

对于 Windows,链接到连接器共享库的应用程序只有在连接器库和库存储在以下任一位置时才能运行:

  • 在 Windows 系统文件夹中

  • 在与应用程序相同的文件夹中

  • PATH 环境变量 中列出的文件夹中

如果应用程序链接到连接器静态库,则必须在上述位置之一找到所需的库。

构建连接器/C++

配置连接器/C++ 分发版后,使用以下命令构建它:

cmake --build . --config build_type

--config选项是可选的。它指定要使用的构建配置,例如 ReleaseDebug。如果省略--config,则默认为 Debug

重要的

如果您--config在前面的命令中指定了该--config 选项,请为后面的步骤指定相同的选项,例如安装连接器/C++ 或构建测试程序的步骤。

如果构建成功,它会在构建目录中创建连接器库。build_type(对于 Windows,在与为选项指定的值 同名的子目录中查找库 --config。)

  • 如果您构建动态库,它们具有以下名称:

    • libmysqlcppconn8.so.1(Unix)

    • libmysqlcppconn8.1.dylib(苹果系统)

    • mysqlcppconn8-1-vs14.dll(视窗)

  • 如果您构建静态库,它们具有以下名称:

    • libmysqlcppconn8-static.a(Unix、macOS)

    • mysqlcppconn8-static.lib(视窗)

如果您启用了WITH_JDBC 在构建中包含旧版 JDBC 连接器的选项,则会创建以下附加库文件。

  • 如果您构建遗留动态库,它们具有以下名称:

    • libmysqlcppconn.so.7(Unix)

    • libmysqlcppconn.7.dylib(苹果系统)

    • mysqlcppconn-7-vs14.dll(视窗)

  • 如果您构建遗留静态库,它们具有以下名称:

    • libmysqlcppconn-static.a(Unix、macOS)

    • mysqlcppconn-static.lib(视窗)

安装连接器/C++

要安装连接器/C++,请使用以下命令:

cmake --build . --target install --config build_type

验证连接器/C++ 功能

要验证连接器功能,请构建并运行testapp 源代码分发目录中包含的一个或多个测试程序。创建一个要使用的目录并将位置更改到其中。然后发出以下命令:

cmake [other_options] -DWITH_CONCPP=concpp_install concpp_source/testapp
cmake --build . --config=build_type

WITH_CONCPP是一个仅用于配置测试应用程序的选项。other_options 包含用于配置连接器/C++ 本身的选项(-GWITH_BOOSTBUILD_STATIC等)。 concpp_source是包含Connector/C++源代码 concpp_install的目录,是Connector/C++的安装目录:

前面的命令应该 在构建位置的目录中创建devapi_testxapi_test 程序。run如果WITH_JDBC 在配置测试程序时启用,则构建还会创建 jdbc_test程序。

在运行测试程序之前,确保 MySQL 服务器实例在启用 X 插件的情况下运行。最简单的安排方法是使用 MySQL 发行版中的mysql-test-run.pl 脚本。对于 MySQL 8.0,默认启用 X Plugin,因此在该 mysql-test发行版的目录中调用此命令:

perl mysql-test-run.pl --start-and-exit

对于 MySQL 5.7,必须显式启用 X 插件,因此添加一个选项来执行此操作:

perl mysql-test-run.pl --start-and-exit --mysqld=--plugin-load=mysqlx

该命令应启动一个启用 X 插件并侦听端口 13009 而不是其标准端口 (33060) 的测试服务器实例。

现在您可以运行其中一个测试程序。它们接受一个连接字符串参数,所以如果服务器是按照刚才描述的那样启动的,你可以像这样运行它们:

run/devapi_test mysqlx://root@127.0.0.1:13009
run/xapi_test mysqlx://root@127.0.0.1:13009

连接字符串假定 root没有任何密码的用户帐户可用,并且程序假定有test 可用的模式(假设适用于使用mysql-test-run.pl启动的服务器)。

要测试jdbc_test,您需要一个 MySQL 服务器,但不需要 X Plugin。此外,连接选项必须采用 JDBC API 指定的形式。将用户名作为第二个参数传递。例如:

run/jdbc_test tcp://127.0.0.1:13009 root