MySQL Connector/C++ 開發人員指南  /  從原始碼安裝 Connector/C++  /  從原始碼安裝 Connector/C++

4.3 從原始碼安裝 Connector/C++

要從原始碼安裝 Connector/C++,請驗證您的系統是否滿足第 4.1 節,「原始碼安裝系統先決條件」中概述的要求。

配置 Connector/C++

使用 CMake 來配置和建置 Connector/C++。僅支援異地建置,因此請建立一個目錄以用於建置,並變更位置到該目錄。然後使用此命令配置建置,其中 concpp_source 是包含 Connector/C++ 原始碼的目錄

cmake concpp_source

可能需要在配置命令上指定其他選項。一些範例

  • 預設情況下,會使用這些安裝位置

    • /usr/local/mysql/connector-c++-8.0 (Unix 和類 Unix 系統)

    • 使用者家目錄/MySQL/"MySQL Connector C++ 8.0" (Windows)

    若要明確指定安裝位置,請使用 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 選項來配置它們 (-GWITH_BOOSTBUILD_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++

配置 Connector/C++ 發行版本之後,請使用此命令建置它

cmake --build . --config build_type

--config 選項是選用的。它指定要使用的建置配置,例如 ReleaseDebug。如果您省略 --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)

安裝 Connector/C++

若要安裝 Connector/C++,請使用此命令

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

驗證 Connector/C++ 功能

若要驗證連接器功能,請建置並執行原始碼發行版本的 testapp 目錄中包含的一個或多個測試程式。建立一個目錄以使用,並變更位置到該目錄。然後發出以下命令

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

WITH_CONCPP 是一個僅用於配置測試應用程式的選項。other_options 包含您用來配置 Connector/C++ 本身的選項(-GWITH_BOOSTBUILD_STATIC 等)。concpp_source 是包含 Connector/C++ 原始碼的目錄,而 concpp_install 是 Connector/C++ 的安裝目錄。

先前的命令應該會在建置位置的 run 目錄中建立 devapi_testxapi_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://root@127.0.0.1:13009
run/xapi_test mysqlx://root@127.0.0.1:13009

連線字串假設可以使用沒有任何密碼的 root 使用者帳戶,並且程式假設有一個可用的 test schema(使用 mysql-test-run.pl 啟動的伺服器會滿足這些假設)。

要測試 jdbc_test,您需要一個 MySQL 伺服器,但不需要 X Plugin。此外,連線選項必須採用 JDBC API 指定的形式。將使用者名稱作為第二個參數傳遞。例如

run/jdbc_test tcp://127.0.0.1:13009 root