CMake 程式在您組態 MySQL 原始碼發行版時,提供相當大的控制權。一般而言,您會使用 CMake 命令列上的選項來執行此操作。如需 CMake 支援的選項相關資訊,請在最上層原始碼目錄中執行下列任一命令
$> cmake . -LH
$> ccmake .您也可以使用特定的環境變數來影響 CMake。請參閱第 6.9 節「環境變數」。
對於布林值選項,值可以指定為 1 或 ON 來啟用選項,或是指定為 0 或 OFF 來停用選項。
許多選項會組態編譯時預設值,這些值可在伺服器啟動時覆寫。例如,組態預設安裝基本目錄位置、TCP/IP 連接埠號碼與 Unix Socket 檔案的 CMAKE_INSTALL_PREFIX、MYSQL_TCP_PORT 與 MYSQL_UNIX_ADDR 選項,可以在伺服器啟動時使用 --basedir、--port 與 --socket 選項來變更 mysqld。如果適用,組態選項描述會指出對應的 mysqld 啟動選項。
下列各節提供關於 CMake 選項的詳細資訊。
下表顯示可用的 CMake 選項。在 預設 欄中,PREFIX 代表 CMAKE_INSTALL_PREFIX 選項的值,此選項指定安裝基本目錄。此值會用作數個安裝子目錄的父系位置。
表 2.13 MySQL 原始碼組態選項參考 (CMake)
| 格式 | 描述 | 預設 |
|---|---|---|
ADD_GDB_INDEX |
是否要在二進位檔中啟用 .gdb_index 區段的產生 | |
BUILD_CONFIG |
使用與官方版本相同的建置選項 | |
BUNDLE_RUNTIME_LIBRARIES |
將執行階段程式庫與適用於 Windows 的伺服器 MSI 和 Zip 套件組合 | OFF |
CMAKE_BUILD_TYPE |
要產生的建置類型 | RelWithDebInfo |
CMAKE_CXX_FLAGS |
C++ 編譯器的旗標 | |
CMAKE_C_FLAGS |
C 編譯器的旗標 | |
CMAKE_INSTALL_PREFIX |
安裝基本目錄 | /usr/local/mysql |
COMPILATION_COMMENT |
關於編譯環境的註解 | |
COMPILATION_COMMENT_SERVER |
關於由 mysqld 使用的編譯環境的註解 | |
COMPRESS_DEBUG_SECTIONS |
壓縮二進位執行檔的除錯區段 | OFF |
CPACK_MONOLITHIC_INSTALL |
套件建置是否產生單一檔案 | OFF |
DEFAULT_CHARSET |
預設伺服器字元集 | utf8mb4 |
DEFAULT_COLLATION |
預設伺服器定序 | utf8mb4_0900_ai_ci |
DISABLE_PSI_COND |
排除效能結構描述條件檢測 | OFF |
DISABLE_PSI_DATA_LOCK |
排除效能結構描述資料鎖定檢測 | OFF |
DISABLE_PSI_ERROR |
排除效能結構描述伺服器錯誤檢測 | OFF |
DISABLE_PSI_FILE |
排除效能結構描述檔案檢測 | OFF |
DISABLE_PSI_IDLE |
排除效能結構描述閒置檢測 | OFF |
DISABLE_PSI_MEMORY |
排除效能結構描述記憶體檢測 | OFF |
DISABLE_PSI_METADATA |
排除效能結構描述中繼資料檢測 | OFF |
DISABLE_PSI_MUTEX |
排除效能結構描述互斥鎖檢測 | OFF |
DISABLE_PSI_PS |
排除效能結構描述預先準備的陳述式 | OFF |
DISABLE_PSI_RWLOCK |
排除效能結構描述讀寫鎖定檢測 | OFF |
DISABLE_PSI_SOCKET |
排除效能結構描述 Socket 檢測 | OFF |
DISABLE_PSI_SP |
排除效能結構描述儲存的程式檢測 | OFF |
DISABLE_PSI_STAGE |
排除效能結構描述階段檢測 | OFF |
DISABLE_PSI_STATEMENT |
排除效能結構描述陳述式檢測 | OFF |
DISABLE_PSI_STATEMENT_DIGEST |
排除效能結構描述 statements_digest 檢測 | OFF |
DISABLE_PSI_TABLE |
排除效能結構描述資料表檢測 | OFF |
DISABLE_PSI_THREAD |
排除效能結構描述執行緒檢測 | OFF |
DISABLE_PSI_TRANSACTION |
排除效能結構描述交易檢測 | OFF |
ENABLED_LOCAL_INFILE |
是否要為 LOAD DATA 啟用 LOCAL | OFF |
ENABLED_PROFILING |
是否要啟用查詢分析程式碼 | ON |
ENABLE_EXPERIMENTAL_SYSVARS |
是否要啟用實驗性的 InnoDB 系統變數 | OFF |
ENABLE_GCOV |
是否要納入 gcov 支援 | |
ENABLE_GPROF |
啟用 gprof (僅限最佳化的 Linux 建置) | OFF |
FORCE_COLORED_OUTPUT |
是否要為編譯器輸出上色 | OFF |
FORCE_INSOURCE_BUILD |
是否要強制進行來源內建置 | OFF |
FORCE_UNSUPPORTED_COMPILER |
是否要允許不支援的編譯器 | OFF |
FPROFILE_GENERATE |
是否要產生設定檔導向最佳化資料 | OFF |
FPROFILE_USE |
是否要使用設定檔導向最佳化資料 | OFF |
HAVE_PSI_MEMORY_INTERFACE |
啟用效能結構描述記憶體追蹤模組,以用於動態儲存過度對齊類型的記憶體配置函數 | OFF |
忽略 AIO 檢查 |
使用 -DBUILD_CONFIG=mysql_release 時,忽略 libaio 檢查 | OFF |
INSTALL_BINDIR |
使用者可執行檔目錄 | PREFIX/bin |
INSTALL_DOCDIR |
文件目錄 | PREFIX/docs |
INSTALL_DOCREADMEDIR |
README 檔案目錄 | PREFIX |
INSTALL_INCLUDEDIR |
標頭檔目錄 | PREFIX/include |
INSTALL_INFODIR |
Info 檔案目錄 | PREFIX/docs |
INSTALL_LAYOUT |
選擇預定義的安裝佈局 | 獨立 (STANDALONE) |
INSTALL_LIBDIR |
程式庫檔案目錄 | PREFIX/lib |
INSTALL_MANDIR |
手冊頁目錄 | PREFIX/man |
INSTALL_MYSQLSHAREDIR |
共享資料目錄 | PREFIX/share |
INSTALL_MYSQLTESTDIR |
mysql-test 目錄 | PREFIX/mysql-test |
INSTALL_PKGCONFIGDIR |
mysqlclient.pc pkg-config 檔案的目錄 | INSTALL_LIBDIR/pkgconfig |
INSTALL_PLUGINDIR |
外掛程式目錄 | PREFIX/lib/plugin |
INSTALL_PRIV_LIBDIR |
安裝私有程式庫目錄 | |
INSTALL_SBINDIR |
伺服器可執行檔目錄 | PREFIX/bin |
INSTALL_SECURE_FILE_PRIVDIR |
secure_file_priv 預設值 | 平台特定 |
INSTALL_SHAREDIR |
aclocal/mysql.m4 安裝目錄 | PREFIX/share |
INSTALL_STATIC_LIBRARIES |
是否安裝靜態程式庫 | ON |
INSTALL_SUPPORTFILESDIR |
額外支援檔案目錄 | PREFIX/support-files |
LINK_RANDOMIZE |
是否隨機化 mysqld 二進制檔中符號的順序 | OFF |
LINK_RANDOMIZE_SEED |
LINK_RANDOMIZE 選項的種子值 | mysql |
MAX_INDEXES |
每個資料表的最大索引數 | 64 |
MSVC_CPPCHECK |
啟用 MSVC 程式碼分析。 | ON |
MUTEX_TYPE |
InnoDB 互斥鎖類型 | 事件 |
MYSQLX_TCP_PORT |
X Plugin 使用的 TCP/IP 連接埠號碼 | 33060 |
MYSQLX_UNIX_ADDR |
X Plugin 使用的 Unix socket 檔案 | /tmp/mysqlx.sock |
MYSQL_DATADIR |
資料目錄 | |
MYSQL_MAINTAINER_MODE |
是否啟用 MySQL 維護者特定的開發環境 | OFF |
MYSQL_PROJECT_NAME |
Windows/macOS 專案名稱 | MySQL |
MYSQL_TCP_PORT |
TCP/IP 連接埠號碼 | 3306 |
MYSQL_UNIX_ADDR |
Unix socket 檔案 | /tmp/mysql.sock |
NDB_UTILS_LINK_DYNAMIC |
使 NDB 工具動態連結到 ndbclient | |
ODBC_INCLUDES |
ODBC include 目錄 | |
ODBC_LIB_DIR |
ODBC 程式庫目錄 | |
OPTIMIZER_TRACE |
是否支援最佳化工具追蹤 | |
OPTIMIZE_SANITIZER_BUILDS |
是否最佳化消毒工具建置 | ON |
REPRODUCIBLE_BUILD |
格外注意建立獨立於建置位置和時間的建置結果 | |
SHOW_SUPPRESSED_COMPILER_WARNING |
是否顯示被抑制的編譯器警告,而不是因 -Werror 而失敗。 | OFF |
SYSCONFDIR |
選項檔案目錄 | |
SYSTEMD_PID_DIR |
systemd 下 PID 檔案的目錄 | /var/run/mysqld |
SYSTEMD_SERVICE_NAME |
systemd 下 MySQL 服務的名稱 | mysqld |
TMPDIR |
tmpdir 預設值 | |
WIN_DEBUG_NO_INLINE |
是否停用函式內聯 | OFF |
WITHOUT_SERVER |
不建置伺服器 | OFF |
WITHOUT_xxx_STORAGE_ENGINE |
從建置中排除儲存引擎 xxx | |
WITH_ANT |
用於建置 GCS Java 包裝器的 Ant 路徑 | |
WITH_ASAN |
啟用 AddressSanitizer | OFF |
WITH_ASAN_SCOPE |
啟用 AddressSanitizer -fsanitize-address-use-after-scope Clang 標誌 | OFF |
WITH_AUTHENTICATION_CLIENT_PLUGINS |
如果建置任何對應的伺服器驗證外掛程式,則自動啟用 | |
WITH_AUTHENTICATION_LDAP |
如果無法建置 LDAP 驗證外掛程式,是否報告錯誤 | OFF |
WITH_AUTHENTICATION_PAM |
建置 PAM 驗證外掛程式 | OFF |
WITH_AWS_SDK |
Amazon Web Services 軟體開發套件的位置 | |
WITH_BUILD_ID |
在 Linux 系統上,產生唯一的建置 ID | ON |
WITH_CLASSPATH |
建置 MySQL Cluster Connector for Java 時使用的類別路徑。預設值為空字串。 | |
WITH_CLIENT_PROTOCOL_TRACING |
建置用戶端協定追蹤架構 | ON |
WITH_CURL |
curl 程式庫的位置 | |
WITH_DEBUG |
是否包含偵錯支援 | OFF |
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用預設編譯器選項 | ON |
WITH_DEVELOPER_ENTITLEMENTS |
是否將「get-task-allow」權限新增至 macOS 上的所有可執行檔,以便在發生意外伺服器停止時產生核心傾印 | OFF |
WITH_EDITLINE |
要使用的 libedit/editline 程式庫 | 綁定 |
WITH_ERROR_INSERT |
在 NDB 儲存引擎中啟用錯誤注入。不應將其用於建置打算用於生產的二進制檔。 | OFF |
WITH_ICU |
ICU 支援的類型 | 綁定 |
WITH_INNODB_EXTRA_DEBUG |
是否包含 InnoDB 的額外偵錯支援。 | OFF |
WITH_JEMALLOC |
是否與 -ljemalloc 連結 | OFF |
WITH_LD |
是否使用 LLVM lld 或 mold 連結器 | |
WITH_LIBEVENT |
要使用的 libevent 程式庫 | 綁定 |
WITH_LIBWRAP |
是否包含 libwrap (TCP wrappers) 支援 | OFF |
WITH_LOCK_ORDER |
是否啟用 LOCK_ORDER 工具 | OFF |
WITH_LSAN |
是否執行 LeakSanitizer,但不使用 AddressSanitizer | OFF |
WITH_LTO |
啟用連結時間最佳化工具 | OFF |
WITH_LZ4 |
LZ4 程式庫支援的類型 | 綁定 |
WITH_MECAB |
編譯 MeCab | |
WITH_MSAN |
啟用 MemorySanitizer | OFF |
WITH_MSCRT_DEBUG |
啟用 Visual Studio CRT 記憶體洩漏追蹤 | OFF |
WITH_MYSQLX |
是否停用 X 協定 | ON |
WITH_NDB |
建置 MySQL NDB Cluster,包括 NDB 儲存引擎和所有 NDB 程式 | OFF |
WITH_NDBAPI_EXAMPLES |
建置 API 範例程式。 | OFF |
WITH_NDBCLUSTER |
NDB 8.0.30 及更早版本:建置 NDB 儲存引擎。NDB 8.0.31 及更新版本:已過時;請改用 WITH_NDB | OFF |
WITH_NDBCLUSTER_STORAGE_ENGINE |
在 NDB 8.0.31 之前,這僅供內部使用。NDB 8.0.31 及更新版本:切換 (僅) 包含 NDBCLUSTER 儲存引擎 | ON |
WITH_NDBMTD |
建置多執行緒資料節點二進制檔 | ON |
WITH_NDB_DEBUG |
產生用於測試或疑難排解的偵錯建置。 | OFF |
WITH_NDB_JAVA |
啟用 Java 和 ClusterJ 支援的建置。預設為啟用。僅在 MySQL Cluster 中支援。 | ON |
WITH_NDB_PORT |
使用此選項建置的管理伺服器使用的預設連接埠。如果未使用此選項建置,管理伺服器的預設連接埠為 1186。 | [無] |
WITH_NDB_TEST |
包含 NDB API 測試程式。 | OFF |
WITH_NDB_TLS_SEARCH_PATH |
NDB 程式用來搜尋 TLS 憑證和金鑰檔案的預設路徑。 | $HOME/ndb-tls |
WITH_NUMA |
設定 NUMA 記憶體配置原則 | |
WITH_PACKAGE_FLAGS |
對於通常用於 RPM/DEB 套件的旗標,是否將其新增至這些平台上的獨立建置 | |
WITH_PROTOBUF |
要使用的 Protocol Buffers 套件 | 綁定 |
WITH_RAPID |
是否建置快速開發週期外掛程式 | ON |
WITH_RAPIDJSON |
RapidJSON 支援的類型 | 綁定 |
WITH_ROUTER |
是否建置 MySQL Router | ON |
WITH_SHOW_PARSE_TREE |
支援 SHOW PARSE_TREE 偵錯陳述式 | |
WITH_SSL |
SSL 支援的類型 | 系統 |
WITH_SYSTEMD |
啟用 systemd 支援檔案的安裝 | OFF |
WITH_SYSTEMD_DEBUG |
啟用額外的 systemd 偵錯資訊 | OFF |
WITH_SYSTEM_LIBS |
設定未明確設定的程式庫選項的系統值 | OFF |
WITH_TCMALLOC |
是否與 -ltcmalloc 連結。僅在 Linux 上支援 BUNDLED | OFF |
WITH_TEST_TRACE_PLUGIN |
建置測試協定追蹤外掛程式 | OFF |
WITH_TSAN |
啟用 ThreadSanitizer | OFF |
WITH_UBSAN |
啟用未定義行為消毒工具 | OFF |
WITH_UNIT_TESTS |
使用單元測試編譯 MySQL | ON |
WITH_UNIXODBC |
啟用 unixODBC 支援 | OFF |
WITH_VALGRIND |
是否在 Valgrind 標頭檔案中編譯 | OFF |
WITH_WIN_JEMALLOC |
包含 jemalloc.dll 的目錄路徑 | |
WITH_ZLIB |
zlib 支援的類型 | 綁定 |
WITH_ZSTD |
zstd 支援的類型 | 綁定 |
WITH_xxx_STORAGE_ENGINE |
將儲存引擎 xxx 靜態編譯到伺服器中 |
此選項使用 Oracle 用於產生官方 MySQL 發行版本的二進制發行版本的相同建置選項,來設定來源發行版本。
在 Linux 系統上,會產生唯一的建置 ID,該 ID 用作
build_id系統變數的值,並在啟動時寫入 MySQL 伺服器記錄。將此選項設定為OFF以停用此功能。此選項在 Linux 以外的平台上無效。
-DBUNDLE_RUNTIME_LIBRARIES=bool是否將執行階段程式庫與 Windows 的伺服器 MSI 和 Zip 套件捆綁在一起。
要產生的建置類型
RelWithDebInfo:啟用最佳化並產生偵錯資訊。這是預設的 MySQL 建置類型。Release:啟用最佳化,但省略偵錯資訊以減少建置大小。Debug:停用最佳化並產生偵錯資訊。如果啟用WITH_DEBUG選項,也會使用此建置類型。也就是說,-DWITH_DEBUG=1的效果與-DCMAKE_BUILD_TYPE=Debug相同。
不支援選項值
None和MinSizeRel。-DCPACK_MONOLITHIC_INSTALL=bool此選項會影響 make package 作業是產生多個安裝套件檔案還是單一檔案。如果停用,該作業會產生多個安裝套件檔案,如果您只想安裝完整 MySQL 安裝的一部分,則可能很有用。如果啟用,則會產生單一檔案以安裝所有內容。
定義是否強制執行原始碼內建置。建議使用原始碼外建置,因為它們允許從相同的來源進行多次建置,並且可以透過移除建置目錄來快速執行清除。若要強制執行原始碼內建置,請使用
-DFORCE_INSOURCE_BUILD=ON叫用 CMake。定義在命令列上編譯時是否為 gcc 和 clang 啟用彩色編譯器輸出。預設為
OFF。
CMAKE_INSTALL_PREFIX 選項會指出基本安裝目錄。名稱格式為 INSTALL_ 的其他選項會指出元件位置,並相對於前置詞來解譯,且其值為相對路徑名稱。其值不應包含前置詞。xxx
-DCMAKE_INSTALL_PREFIX=dir_name安裝基本目錄。
可以使用
--basedir選項在伺服器啟動時設定此值。要安裝使用者程式的位置。
指定文件安裝於何處。
-DINSTALL_DOCREADMEDIR=dir_name指定
README檔案安裝於何處。指定標頭檔安裝於何處。
指定 Info 檔案安裝於何處。
選擇預定義的安裝佈局
STANDALONE:與.tar.gz和.zip套件使用的佈局相同。這是預設值。RPM:類似於 RPM 套件的佈局。SVR4:Solaris 套件佈局。DEB:DEB 套件佈局(實驗性)。
您可以選擇預定義的佈局,但可以透過指定其他選項來修改個別組件的安裝位置。例如
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/dataINSTALL_LAYOUT的值決定了secure_file_priv系統變數的預設值。請參閱 第 7.1.8 節,「伺服器系統變數」 中此變數的描述。指定程式庫檔案安裝於何處。
指定手冊頁面安裝於何處。
-DINSTALL_MYSQLSHAREDIR=dir_name指定共用資料檔案安裝於何處。
-DINSTALL_MYSQLTESTDIR=dir_name指定
mysql-test目錄安裝於何處。若要禁止安裝此目錄,請明確地將選項設定為空值(-DINSTALL_MYSQLTESTDIR=)。-DINSTALL_PKGCONFIGDIR=dir_name指定安裝
mysqlclient.pc檔案以供 pkg-config 使用的目錄。除非INSTALL_LIBDIR以/mysql結尾,否則預設值為INSTALL_LIBDIR/pkgconfig,在這種情況下,會先移除該結尾。指定外掛程式目錄的位置。
此值可以使用
--plugin_dir選項在伺服器啟動時設定。-DINSTALL_PRIV_LIBDIR=dir_name指定動態程式庫目錄的位置。
預設位置。 對於 RPM 建置,此為
/usr/lib64/mysql/private/,對於 DEB,此為/usr/lib/mysql/private/,對於 TAR,此為lib/private/。Protobuf。 因為這是一個私有位置,載入器(例如 Linux 上的
ld-linux.so)可能無法在沒有協助的情況下找到libprotobuf.so檔案。為了引導載入器,RPATH=$ORIGIN/../$INSTALL_PRIV_LIBDIR會新增到 mysqld 和 mysqlxtest。這適用於大多數情況,但在使用 資源群組 功能時,mysqld 是setsuid,且載入器會忽略任何包含$ORIGIN的RPATH。為了克服這個問題,在 mysqld 的 DEB 和 RPM 版本中會設定到目錄的明確完整路徑,因為目標目的地是已知的。對於 tarball 安裝,需要使用類似 patchelf 的工具修補 mysqld。指定 mysqld 伺服器的安裝位置。
-DINSTALL_SECURE_FILE_PRIVDIR=dir_name指定
secure_file_priv系統變數的預設值。預設值是平台特定的,並取決於INSTALL_LAYOUTCMake 選項的值;請參閱 第 7.1.8 節,「伺服器系統變數」中secure_file_priv系統變數的描述。指定
aclocal/mysql.m4的安裝位置。-DINSTALL_STATIC_LIBRARIES=bool是否安裝靜態程式庫。預設值為
ON。如果設定為OFF,則不會安裝這些程式庫檔案:libmysqlclient.a、libmysqlservices.a。-DINSTALL_SUPPORTFILESDIR=dir_name指定額外支援檔案的安裝位置。
是否隨機化 mysqld 二進位檔中符號的順序。預設值為
OFF。只有在除錯時才應該啟用此選項。指定
LINK_RANDOMIZE選項的種子值。該值是一個字串。預設值為mysql,一個任意選擇。指定 MySQL 資料目錄的位置。
此值可以使用
--datadir選項在伺服器啟動時設定。指定 ODBC 包含目錄的位置,該位置可能在設定 Connector/ODBC 時使用。
指定 ODBC 程式庫目錄的位置,該位置可能在設定 Connector/ODBC 時使用。
指定預設的
my.cnf選項檔案目錄。此位置無法在伺服器啟動時設定,但您可以使用
--defaults-file=選項,使用給定的選項檔案來啟動伺服器,其中file_namefile_name是檔案的完整路徑名稱。指定當 MySQL 由 systemd 管理時建立 PID 檔案的目錄名稱。預設值為
/var/run/mysqld;這可能會根據INSTALL_LAYOUT的值隱式地變更。除非啟用
WITH_SYSTEMD,否則會忽略此選項。指定當 MySQL 由 systemd 管理時要使用的 MySQL 服務名稱。預設值為
mysqld;這可能會根據INSTALL_LAYOUT的值隱式地變更。除非啟用
WITH_SYSTEMD,否則會忽略此選項。指定要用於
tmpdir系統變數的預設位置。如果未指定,則該值預設為<stdio.h>中的P_tmpdir。
儲存引擎以外掛程式的形式建置。您可以將外掛程式建置為靜態模組(編譯到伺服器中)或動態模組(建置為動態程式庫,該程式庫必須使用 INSTALL PLUGIN 陳述式或 --plugin-load 選項安裝到伺服器中,然後才能使用)。某些外掛程式可能不支援靜態或動態建置。
InnoDB、 MyISAM、 MERGE、 MEMORY 和 CSV 引擎是強制性的(始終編譯到伺服器中),不需要明確安裝。
若要將儲存引擎靜態編譯到伺服器中,請使用 -DWITH_。一些允許的 engine_STORAGE_ENGINE=1engine 值包括 ARCHIVE、BLACKHOLE、EXAMPLE 和 FEDERATED。範例:
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1若要建置支援 NDB Cluster 的 MySQL,請使用 WITH_NDB 選項。
不可能在不支援效能架構的情況下進行編譯。如果希望在沒有特定類型的檢測的情況下進行編譯,可以使用以下 CMake 選項來完成。
DISABLE_PSI_COND
DISABLE_PSI_DATA_LOCK
DISABLE_PSI_ERROR
DISABLE_PSI_FILE
DISABLE_PSI_IDLE
DISABLE_PSI_MEMORY
DISABLE_PSI_METADATA
DISABLE_PSI_MUTEX
DISABLE_PSI_PS
DISABLE_PSI_RWLOCK
DISABLE_PSI_SOCKET
DISABLE_PSI_SP
DISABLE_PSI_STAGE
DISABLE_PSI_STATEMENT
DISABLE_PSI_STATEMENT_DIGEST
DISABLE_PSI_TABLE
DISABLE_PSI_THREAD
DISABLE_PSI_TRANSACTION例如,若要在沒有互斥鎖檢測的情況下進行編譯,請使用 -DDISABLE_PSI_MUTEX=1 來設定 MySQL。
若要從建置中排除儲存引擎,請使用 -DWITH_。範例:engine_STORAGE_ENGINE=0
-DWITH_ARCHIVE_STORAGE_ENGINE=0
-DWITH_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0也可以使用 -DWITHOUT_ 從建置中排除儲存引擎(但建議使用 engine_STORAGE_ENGINE=1-DWITH_)。範例:engine_STORAGE_ENGINE=0
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1如果沒有為給定的儲存引擎指定 -DWITH_ 或 engine_STORAGE_ENGINE-DWITHOUT_,則該引擎將作為共用模組建置,如果無法作為共用模組建置,則會排除該引擎。engine_STORAGE_ENGINE
此選項決定是否在二進位檔案中啟用產生
.gdb_index區段,這可加快在偵錯工具中載入它們的速度。預設情況下,此選項為停用狀態。 使用 lld 連結器,如果使用 lld 或 GNU gold 以外的連結器,則此選項沒有作用。關於編譯環境的描述性註解。雖然 mysqld 使用
COMPILATION_COMMENT_SERVER,但其他程式會使用COMPILATION_COMMENT。-DCOMPRESS_DEBUG_SECTIONS=bool是否壓縮二進位可執行檔的偵錯區段(僅限 Linux)。壓縮可執行檔偵錯區段可節省空間,但會在建置過程中耗費額外的 CPU 時間。
預設值為
OFF。如果未明確設定此選項,但設定了COMPRESS_DEBUG_SECTIONS環境變數,則此選項會從該變數取得其值。-DCOMPILATION_COMMENT_SERVER=string供 mysqld 使用的關於編譯環境的描述性註解(例如,設定
version_comment系統變數)。伺服器以外的程式會使用COMPILATION_COMMENT。-DDEFAULT_CHARSET=charset_name伺服器字元集。依預設,MySQL 使用
utf8mb4字元集。charset_name可以是binary、armscii8、ascii、big5、cp1250、cp1251、cp1256、cp1257、cp850、cp852、cp866、cp932、dec8、eucjpms、euckr、gb2312、gbk、geostd8、greek、hebrew、hp8、keybcs2、koi8r、koi8u、latin1、latin2、latin5、latin7、macce、macroman、sjis、swe7、tis620、ucs2、ujis、utf8mb3、utf8mb4、utf16、utf16le、utf32其中之一。此值可以使用
--character-set-server選項在伺服器啟動時設定。-DDEFAULT_COLLATION=collation_name伺服器定序。依預設,MySQL 使用
utf8mb4_0900_ai_ci。使用SHOW COLLATION陳述式來判斷每個字元集可用的定序。此值可以使用
--collation_server選項在伺服器啟動時設定。是否排除效能架構條件檢測。預設值為
OFF(包含)。是否排除效能架構檔案檢測。預設值為
OFF(包含)。是否排除效能架構閒置檢測。預設值為
OFF(包含)。是否排除效能架構記憶體檢測。預設值為
OFF(包含)。是否排除效能架構中繼資料檢測。預設值為
OFF(包含)。是否排除效能架構互斥鎖檢測。預設值為
OFF(包含)。是否排除效能架構讀寫鎖檢測。預設值為
OFF(包含)。是否排除效能架構通訊端檢測。預設值為
OFF(包含)。是否排除效能架構儲存程式檢測。預設值為
OFF(包含)。是否排除效能架構階段檢測。預設值為
OFF(包含)。是否排除效能架構陳述式檢測。預設值為
OFF(包含)。-DDISABLE_PSI_STATEMENT_DIGEST=bool是否排除效能架構陳述式摘要檢測。預設值為
OFF(包含)。是否排除效能架構資料表檢測。預設值為
OFF(包含)。排除效能架構預先準備的陳述式執行個體檢測。預設值為
OFF(包含)。排除效能架構執行緒檢測。預設值為
OFF(包含)。只有在建置時沒有任何檢測時才停用執行緒,因為其他檢測會依賴執行緒。
-DDISABLE_PSI_TRANSACTION=bool排除效能架構交易檢測。預設值為
OFF(包含)。排除效能架構資料鎖定檢測。預設值為
OFF(包含)。排除效能架構伺服器錯誤檢測。預設值為
OFF(包含)。-DENABLE_EXPERIMENTAL_SYSVARS=bool是否啟用實驗性的
InnoDB系統變數。實驗性系統變數旨在供參與 MySQL 開發的人員使用,僅應在開發或測試環境中使用,並且可能會在未來的 MySQL 版本中被移除,恕不另行通知。有關實驗性系統變數的資訊,請參閱 MySQL 原始碼樹中的/storage/innobase/handler/ha_innodb.cc。可以搜尋 「PLUGIN_VAR_EXPERIMENTAL」 來識別實驗性系統變數。是否在沒有 MySQL Server 的情況下建置。預設值為 OFF,表示會建置伺服器。
這被視為實驗性選項;建議使用伺服器進行建置。
是否包含 gcov 支援(僅限 Linux)。
是否啟用 gprof(僅限最佳化 Linux 建置)。
此選項控制 MySQL 用戶端程式庫中編譯時預設的
LOCAL功能。因此,未明確設定的用戶端會根據 MySQL 建置時指定的ENABLED_LOCAL_INFILE設定,停用或啟用LOCAL功能。預設情況下,MySQL 二進位發行版中的用戶端程式庫在編譯時會停用
ENABLED_LOCAL_INFILE。如果您從原始碼編譯 MySQL,請根據未明確設定的用戶端是否應該停用或啟用LOCAL功能,設定為停用或啟用ENABLED_LOCAL_INFILE。ENABLED_LOCAL_INFILE控制用戶端LOCAL功能的預設值。對於伺服器,local_infile系統變數控制伺服器端的LOCAL功能。若要明確使伺服器拒絕或允許LOAD DATA LOCAL陳述式(無論用戶端程式和程式庫在建置時或執行時如何設定),請分別在停用或啟用--local-infile的情況下啟動 mysqld。local_infile也可以在執行時設定。請參閱第 8.1.6 節,〈LOAD DATA LOCAL 的安全性考量〉。是否啟用查詢分析程式碼(用於
SHOW PROFILE和SHOW PROFILES陳述式)。-DFORCE_UNSUPPORTED_COMPILER=bool預設情況下,CMake 會檢查支援的編譯器的最低版本;若要停用此檢查,請使用
-DFORCE_UNSUPPORTED_COMPILER=ON。-DSHOW_SUPPRESSED_COMPILER_WARNINGS=bool顯示已隱藏的編譯器警告,且不會因
-Werror而失敗。預設為OFF。是否產生設定檔導向最佳化 (PGO) 資料。此選項可用於使用 GCC 實驗 PGO。請參閱 MySQL 原始碼發行版中的
cmake/fprofile.cmake,以取得有關使用FPROFILE_GENERATE和FPROFILE_USE的資訊。這些選項已使用 GCC 8 和 9 進行測試。是否使用設定檔導向最佳化 (PGO) 資料。此選項可用於使用 GCC 實驗 PGO。請參閱 MySQL 原始碼發行版中的
cmake/fprofile.cmake檔案,以取得有關使用FPROFILE_GENERATE和FPROFILE_USE的資訊。這些選項已使用 GCC 8 和 9 進行測試。啟用
FPROFILE_USE也會啟用WITH_LTO。-DHAVE_PSI_MEMORY_INTERFACE=bool是否為動態儲存對齊類型中使用的記憶體配置函式(
ut::aligned_程式庫函式)啟用效能架構記憶體追蹤模組。name如果在 Linux 上提供
-DBUILD_CONFIG=mysql_release選項,則預設情況下必須連結libaio程式庫。如果您沒有libaio或不想安裝它,您可以透過指定-DIGNORE_AIO_CHECK=1來隱藏其檢查。每個資料表的最大索引數。預設值為 64。最大值為 255。小於 64 的值會被忽略,並使用預設值 64。
是否啟用 MySQL 維護者專用的開發環境。如果啟用,此選項會使編譯器警告變成錯誤。
-DWITH_DEVELOPER_ENTITLEMENTS=bool是否在所有可執行檔中新增
get-task-allow權利,以便在伺服器意外停止時產生核心傾印。在 macOS 11+ 上,核心傾印僅限於具有
com.apple.security.get-task-allow權利的處理程序,此 CMake 選項會啟用此權利。此權利允許其他處理程序附加並讀取/修改處理程序的記憶體,並允許--core-file如預期運作。InnoDB使用的互斥鎖類型。選項包括event:使用事件互斥鎖。這是預設值和原始的InnoDB互斥鎖實作。sys:在 UNIX 系統上使用 POSIX 互斥鎖。如果可用,則在 Windows 上使用CRITICAL_SECTION物件。futex:使用 Linux futexes 而不是條件變數來排程等待執行緒。
X Plugin 接聽 TCP/IP 連線的連接埠號碼。預設值為 33060。
此值可以在伺服器啟動時使用
mysqlx_port系統變數設定。伺服器接聽 X Plugin 通訊端連線的 Unix 通訊端檔案路徑。這必須是絕對路徑名稱。預設值為
/tmp/mysqlx.sock。此值可以在伺服器啟動時使用
mysqlx_port系統變數設定。對於 Windows 或 macOS,要併入專案檔名稱中的專案名稱。
伺服器接聽 TCP/IP 連線的連接埠號碼。預設值為 3306。
此值可以在伺服器啟動時使用
--port選項設定。伺服器接聽通訊端連線的 Unix 通訊端檔案路徑。這必須是絕對路徑名稱。預設值為
/tmp/mysql.sock。此值可以在伺服器啟動時使用
--socket選項設定。是否支援最佳化工具追蹤。請參閱 MySQL 內部結構:追蹤最佳化工具。
對於 Linux 系統上的建置,此選項控制是否額外注意建立獨立於建置位置和時間的建置結果。
對於
RelWithDebInfo建置,此選項預設為ON。CMake 預設使用標準連結器。您可以選擇傳入
lld或mold以指定替代連結器。mold 必須是版本 2 或更新版本。此選項可用於 Enterprise Linux 以外的 Linux 系統,Enterprise Linux 一律使用 ld 連結器。
注意先前,可以使用
USE_LD_LLD選項來啟用(預設)或明確停用 Clang 的 LLVM lld 連結器。在 MySQL 8.3 中,已移除USE_LD_LLD。是否在 Windows 上停用函式內嵌。預設值為
OFF(啟用內嵌)。設定 Ant 的路徑,這是建置 GCS Java 包裝函式時所必需的。將
WITH_ANT設定為儲存 Ant tarball 或未封裝的封存的路徑。當未設定WITH_ANT,或設定為特殊值system時,建置程序會假設$PATH中存在二進位ant。是否為支援 AddressSanitizer 的編譯器啟用 AddressSanitizer。預設值為
OFF。是否啟用 AddressSanitizer 的
-fsanitize-address-use-after-scopeClang 旗標以偵測 scope 後使用 (use-after-scope)。預設為關閉。要使用此選項,也必須啟用-DWITH_ASAN。-DWITH_AUTHENTICATION_CLIENT_PLUGINS=bool如果建置任何對應的伺服器身份驗證外掛程式,則會自動啟用此選項。因此,其值取決於其他 CMake 選項,不應明確設定。
-DWITH_AUTHENTICATION_LDAP=bool是否在無法建置 LDAP 身份驗證外掛程式時報告錯誤
如果停用此選項(預設),則在找到所需的標頭檔和程式庫時會建置 LDAP 外掛程式。如果找不到,CMake 會顯示相關註解。
如果啟用此選項,則在找不到所需的標頭檔和程式庫時,CMake 會產生錯誤,防止建置伺服器。
-DWITH_AUTHENTICATION_PAM=bool是否針對包含此外掛程式的原始碼樹狀結構建置 PAM 身份驗證外掛程式。(請參閱第 8.4.1.5 節,「PAM 可插拔身份驗證」。)如果指定此選項且無法編譯此外掛程式,則建置會失敗。
Amazon Web Services 軟體開發套件的位置。
-DWITH_CLIENT_PROTOCOL_TRACING=bool是否將用戶端協定追蹤框架建置到用戶端程式庫中。預設情況下,會啟用此選項。
如需撰寫協定追蹤用戶端外掛程式的資訊,請參閱撰寫協定追蹤外掛程式。
另請參閱
WITH_TEST_TRACE_PLUGIN選項。curl程式庫的位置。curl_type可以是system(使用系統的curl程式庫)、curl程式庫的路徑名稱、no|off|none來停用 curl 支援,或是bundled來使用extra/curl/中綁定的 curl 發行版本。是否包含偵錯支援。
使用偵錯支援設定 MySQL,可讓您在啟動伺服器時使用
--debug="d,parser_debug"選項。這會導致用於處理 SQL 陳述式的 Bison 分析器將分析器追蹤傾印到伺服器的標準錯誤輸出。通常,此輸出會寫入錯誤日誌。使用
WITH_DEBUG選項編譯偵錯支援時,InnoDB儲存引擎的同步偵錯檢查會在UNIV_DEBUG下定義且可用。編譯偵錯支援時,可以使用innodb_sync_debug設定選項來啟用或停用InnoDB同步偵錯檢查。啟用
WITH_DEBUG也會啟用 Debug Sync。此功能用於測試和偵錯。編譯時,Debug Sync 在執行階段預設為停用。若要啟用它,請使用--debug-sync-timeout=選項啟動 mysqld,其中NN是大於 0 的逾時值。(預設值為 0,會停用 Debug Sync。)N會成為各個同步點的預設逾時。使用
WITH_DEBUG選項編譯偵錯支援時,InnoDB儲存引擎的同步偵錯檢查會可用。如需 Debug Sync 功能以及如何使用同步點的說明,請參閱MySQL 內部:測試同步。
要使用的
libedit/editline程式庫。允許的值為bundled(預設) 和system。-DWITH_ICU={icu_type|path_name}MySQL 使用國際碼組件 (ICU) 來支援正規表示式運算。
WITH_ICU選項會指出要包含的 ICU 支援類型或要使用的 ICU 安裝路徑名稱。icu_type可以是下列其中一個值bundled:使用與散發版本綁定的 ICU 程式庫。這是預設值,也是 Windows 唯一支援的選項。system:使用系統 ICU 程式庫。
path_name是要使用的 ICU 安裝路徑名稱。這可能比使用system的icu_type值更佳,因為它可以防止 CMake 偵測並使用系統上安裝的舊版或不正確的 ICU 版本。(執行相同操作的另一個允許方式是將WITH_ICU設定為system,並將CMAKE_PREFIX_PATH選項設定為path_name。)
-DWITH_INNODB_EXTRA_DEBUG=bool是否包含額外的 InnoDB 偵錯支援。
啟用
WITH_INNODB_EXTRA_DEBUG會開啟額外的 InnoDB 偵錯檢查。只有在啟用WITH_DEBUG時,才能啟用此選項。是否連結
-ljemalloc。如果啟用,內建的malloc()、calloc()、realloc()和free()常式會停用。預設值為OFF。WITH_JEMALLOC和WITH_TCMALLOC是互斥的。在 Windows 上,傳遞包含
jemalloc.dll的目錄路徑以啟用 jemalloc 功能。建置系統會將jemalloc.dll複製到與mysqld.exe和/或mysqld-debug.exe相同的目錄,並將其用於記憶體管理作業。如果找不到jemalloc.dll或未匯出所需的函式,則會使用標準記憶體函式。資訊層級的記錄訊息會記錄是否找到並使用 jemalloc。此選項已為 Windows 的官方 MySQL 二進位檔啟用。
要使用的
libevent程式庫。允許的值為bundled(預設) 和system。如果指定system且找不到系統libevent程式庫,則會發生錯誤,且不會使用綁定的libevent。X Plugin 和 MySQL Router 需要
libevent程式庫。是否包含
libwrap(TCP wrappers) 支援。是否啟用 LOCK_ORDER 工具。預設情況下,會停用此選項,且伺服器建置不包含任何工具。如果啟用工具,則可以使用 LOCK_ORDER 工具,如第 7.9.3 節,「LOCK_ORDER 工具」中所述。
注意啟用
WITH_LOCK_ORDER選項後,MySQL 建置需要 flex 程式。是否執行 LeakSanitizer,而不執行 AddressSanitizer。預設值為
OFF。是否啟用連結時間最佳化器 (如果編譯器支援)。預設值為
OFF,除非啟用FPROFILE_USE。WITH_LZ4選項會指出zlib支援的來源bundled:使用與散發版本綁定的lz4程式庫。這是預設值。system:使用系統lz4程式庫。
-DWITH_MECAB={disabled|system|path_name}使用此選項來編譯 MeCab 分析器。如果您已將 MeCab 安裝到其預設安裝目錄,請設定
-DWITH_MECAB=system。system選項適用於從來源或使用原生套件管理公用程式從二進位檔執行的 MeCab 安裝。如果您將 MeCab 安裝到自訂安裝目錄,請指定 MeCab 安裝的路徑,例如-DWITH_MECAB=/opt/mecab。如果system選項不起作用,指定 MeCab 安裝路徑應在所有情況下都有效。如需相關資訊,請參閱第 14.9.9 節,「MeCab 全文剖析器外掛程式」。
是否啟用 MemorySanitizer,用於支援此功能的編譯器。預設為關閉。
若要使此選項生效,所有連結到 MySQL 的程式庫也必須使用此選項啟用來進行編譯。
是否啟用 Visual Studio CRT 記憶體洩漏追蹤。預設值為
OFF。是否啟用 MSVC 程式碼分析。預設值為
ON。是否建置 X Plugin 的支援。預設值為
ON。請參閱 第 22 章,使用 MySQL 作為文件儲存。明確設定 NUMA 記憶體配置原則。CMake 會根據目前平台是否支援
NUMA來設定預設的WITH_NUMA值。對於不支援 NUMA 的平台,CMake 的行為如下:在沒有 NUMA 選項的情況下(一般情況),CMake 會正常繼續,只產生此警告:NUMA 程式庫遺失或所需版本不可用。
使用
-DWITH_NUMA=ON時,CMake 會中止並顯示此錯誤:NUMA 程式庫遺失或所需版本不可用。
對於通常用於 RPM 和 Debian 套件的標誌,是否將它們新增到這些平台上的獨立建置中。對於非除錯建置,預設值為
ON。要使用的 Protocol Buffers 套件。
protobuf_type可以是下列其中一個值:bundled:使用與發行版本綁定的套件。這是預設值。您可以選擇使用INSTALL_PRIV_LIBDIR來修改動態 Protobuf 程式庫目錄。system:使用系統上安裝的套件。
其他值會被忽略,並回退到
bundled。是否建置快速開發週期外掛程式。啟用時,會在建置樹狀結構中建立一個包含這些外掛程式的
rapid目錄。停用時,不會在建置樹狀結構中建立rapid目錄。預設值為ON,除非rapid目錄從來源樹狀結構中移除,在這種情況下,預設值會變為OFF。-DWITH_RAPIDJSON=rapidjson_type要包含的 RapidJSON 程式庫支援類型。
rapidjson_type可以是下列其中一個值:bundled:使用與發行版本綁定的 RapidJSON 程式庫。這是預設值。system:使用系統 RapidJSON 程式庫。需要 1.1.0 或更高版本。
是否建置 MySQL Router。預設值為
ON。-DWITH_SSL={|ssl_typepath_name}為了支援加密連線、隨機數產生的熵和其他加密相關操作,MySQL 必須使用 SSL 程式庫建置。此選項指定要使用的 SSL 程式庫。
ssl_type可以是下列其中一個值:system:使用系統 OpenSSL 程式庫。這是預設值。在 macOS 和 Windows 上,使用
system會將 MySQL 配置為如同使用path_name指向手動安裝的 OpenSSL 程式庫來呼叫 CMake。這是因為它們沒有系統 SSL 程式庫。在 macOS 上,brew install openssl 會安裝到/usr/local/opt/openssl,以便system可以找到它。在 Windows 上,它會檢查%ProgramFiles%/OpenSSL、%ProgramFiles%/OpenSSL-Win32、%ProgramFiles%/OpenSSL-Win64、C:/OpenSSL、C:/OpenSSL-Win32和C:/OpenSSL-Win64。yes:這是system的同義詞。openssl:使用替代的 OpenSSL 系統套件,例如 EL7 上的versionopenssl11,或 EL8 上的openssl3(或openssl3-fips)。由於身份驗證外掛程式(例如 LDAP 和 Kerberos)不支援這些替代版本的 OpenSSL,因此會停用它們。
path_name是要使用的 OpenSSL 安裝路徑名稱。這可能比使用ssl_type值system更為可取,因為它可以防止 CMake 偵測和使用系統上安裝的較舊或不正確的 OpenSSL 版本。(執行相同操作的另一種允許方式是將WITH_SSL設定為system,並將CMAKE_PREFIX_PATH選項設定為path_name。)
如需配置 SSL 程式庫的更多資訊,請參閱 第 2.8.6 節,〈配置 SSL 程式庫支援〉。
在伺服器中啟用
SHOW PARSE_TREE的支援,僅用於開發和偵錯。不適用於發行版本,也不支援在生產環境中使用。是否啟用安裝 systemd 支援檔案。預設情況下,此選項已停用。啟用時,會安裝 systemd 支援檔案,並且不會安裝 mysqld_safe 等指令碼和 System V 初始化指令碼。在 systemd 不可用的平台上,啟用
WITH_SYSTEMD會導致 CMake 發生錯誤。當伺服器使用此選項建置時,MySQL 會在伺服器的錯誤日誌中包含所有 systemd 訊息(請參閱 第 7.4.2 節,〈錯誤日誌〉)。
如需更多關於使用 systemd 的資訊,請參閱 第 2.5.9 節,〈使用 systemd 管理 MySQL 伺服器〉。該節還包括關於指定
[mysqld_safe]選項群組中指定的選項的資訊。由於在使用 systemd 時不會安裝 mysqld_safe,因此必須以其他方式指定這些選項。此選項作為一個「保護傘」選項,用於設定以下任何未明確設定的 CMake 選項的
system值:WITH_CURL、WITH_EDITLINE、WITH_ICU、WITH_LIBEVENT、WITH_LZ4、WITH_LZMA、WITH_PROTOBUF、WITH_RE2、WITH_SSL、WITH_ZLIB、WITH_ZSTD。是否產生額外的 systemd 除錯資訊,適用於使用 systemd 來執行 MySQL 的平台。預設值為
OFF。是否與
-ltcmalloc連結。如果啟用,則會停用內建的malloc()、calloc()、realloc()和free()常式。預設值為OFF。從 MySQL 8.4.1 開始,來源中包含
tcmalloc程式庫;您可以將此選項設定為BUNDLED,以使建置使用綁定版本。BUNDLED僅在 Linux 系統上受支援。WITH_TCMALLOC和WITH_JEMALLOC互斥。是否建置測試協定追蹤用戶端外掛程式(請參閱使用測試協定追蹤外掛程式)。預設情況下,此選項為停用。除非啟用
WITH_CLIENT_PROTOCOL_TRACING選項,否則啟用此選項無效。如果 MySQL 設定同時啟用這兩個選項,則建置的libmysqlclient用戶端程式庫會內建測試協定追蹤外掛程式,且所有標準 MySQL 用戶端都會載入此外掛程式。不過,即使啟用測試外掛程式,預設也不會生效。可以使用環境變數來控制此外掛程式;請參閱使用測試協定追蹤外掛程式。注意如果您想使用自己的協定追蹤外掛程式,請不要啟用
WITH_TEST_TRACE_PLUGIN選項,因為一次只能載入一個外掛程式,且嘗試載入第二個外掛程式時會發生錯誤。如果您已經建置啟用測試協定追蹤外掛程式的 MySQL 以了解其運作方式,則必須在可以使用自己的外掛程式之前,重新建置未啟用此外掛程式的 MySQL。如需有關撰寫追蹤外掛程式的資訊,請參閱撰寫協定追蹤外掛程式。
是否為支援 ThreadSanitizer 的編譯器啟用 ThreadSanitizer。預設為關閉。
是否為支援 Undefined Behavior Sanitizer 的編譯器啟用 Undefined Behavior Sanitizer。預設為關閉。
如果啟用,則使用單元測試來編譯 MySQL。除非未編譯伺服器,否則預設為
ON。啟用 Connector/ODBC 的 unixODBC 支援。
是否編譯 Valgrind 標頭檔,以將 Valgrind API 公開給 MySQL 程式碼。預設為
OFF。若要產生 Valgrind 感知的偵錯組建,
-DWITH_VALGRIND=1通常會與-DWITH_DEBUG=1結合使用。請參閱建置偵錯設定。某些功能需要伺服器使用壓縮程式庫支援來建置,例如
COMPRESS()和UNCOMPRESS()函式,以及用戶端/伺服器協定的壓縮。WITH_ZLIB選項表示zlib支援的來源zlib的最低支援版本為 1.2.13。bundled:使用與發行版配套的zlib程式庫。這是預設值。system:使用系統zlib程式庫。
使用
zstd演算法的連線壓縮(請參閱第 6.2.8 節「連線壓縮控制」)需要伺服器使用zstd程式庫支援來建置。WITH_ZSTD選項表示zstd支援的來源bundled:使用與發行版配套的zstd程式庫。這是預設值。system:使用系統zstd程式庫。
C 編譯器的旗標。
C++ 編譯器的旗標。
-DWITH_DEFAULT_COMPILER_OPTIONS=bool是否使用來自
cmake/build_configurations/compiler_options.cmake的旗標。注意所有最佳化旗標都經過 MySQL 建置團隊的仔細選擇和測試。覆寫它們可能會導致意外的結果,風險自負。
-DOPTIMIZE_SANITIZER_BUILDS=bool是否將
-O1 -fno-inline新增至清理器組建。預設為ON。
若要指定您自己的 C 和 C++ 編譯器旗標,對於不影響最佳化的旗標,請使用 CMAKE_C_FLAGS 和 CMAKE_CXX_FLAGS CMake 選項。
當您提供自己的編譯器旗標時,您可能也會想要指定 CMAKE_BUILD_TYPE。
例如,若要在 64 位元的 Linux 電腦上建立 32 位元的發行組建,請執行以下操作
$> mkdir build
$> cd build
$> cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo如果您設定影響最佳化的旗標 (-O),則必須設定 numberCMAKE_C_FLAGS_ 和/或 build_typeCMAKE_CXX_FLAGS_ 選項,其中 build_typebuild_type 對應至 CMAKE_BUILD_TYPE 值。若要為預設組建類型 (RelWithDebInfo) 指定不同的最佳化,請設定 CMAKE_C_FLAGS_RELWITHDEBINFO 和 CMAKE_CXX_FLAGS_RELWITHDEBINFO 選項。例如,若要在 Linux 上使用 -O3 和偵錯符號進行編譯,請執行以下操作
$> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
若要編譯以支援 NDB Cluster,您可以使用 -DWITH_NDB,這會導致組建包含 NDB 儲存引擎和所有 NDB 程式。預設會啟用此選項。若要防止建置 NDB 儲存引擎外掛程式,請使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF。可以使用本節中列出的其他選項來控制組建的其他方面。
當使用 NDB Cluster 支援來建置 MySQL 來源時,適用以下選項。
-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}控制 NDB 公用程式(例如 ndb_drop_table)是否與
ndbclient靜態 (OFF) 或動態 (ON) 連結;OFF(靜態連結) 為預設值。通常在建置這些公用程式時會使用靜態連結,以避免LD_LIBRARY_PATH發生問題,或在安裝多個版本的ndbclient時使用。此選項適用於建立 Docker 映像,以及目標環境受到精確控制且需要縮減映像大小的其他情況。設定建置 MySQL NDB Cluster Connector for Java 的類別路徑。預設值為空。如果使用
-DWITH_NDB_JAVA=OFF,則會忽略此選項。在
NDB核心中啟用錯誤注入。僅適用於測試;不適用於建置生產二進位檔。預設值為OFF。建置 MySQL NDB Cluster;建置 NDB 外掛程式和所有 NDB Cluster 程式。
-DWITH_NDBAPI_EXAMPLES={ON|OFF}在
storage/ndb/ndbapi-examples/中建置 NDB API 範例程式。請參閱NDB API 範例,以取得有關這些程式的資訊。-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}控制 (僅)
NDBCLUSTER儲存引擎是否包含在組建中;WITH_NDB會自動啟用此選項,因此建議您改用WITH_NDB。-DWITH_NDBCLUSTER={ON|OFF}(已過時)此選項已過時,且最終可能會移除;請改用
WITH_NDB。建置多執行緒資料節點可執行檔 ndbmtd。預設值為
ON。啟用建置 NDB Cluster 二進位檔的除錯版本。預設為
OFF。啟用建置具有 Java 支援的 NDB Cluster,包括支援 ClusterJ(請參閱 MySQL NDB Cluster Java 連接器)。
此選項預設為
ON。如果您不希望使用 Java 支援編譯 NDB Cluster,您必須在執行 CMake 時明確指定-DWITH_NDB_JAVA=OFF來停用它。否則,如果找不到 Java,建置組態會失敗。使建置的 NDB Cluster 管理伺服器(ndb_mgmd)預設使用此
port。如果未設定此選項,產生的管理伺服器預設會嘗試使用連接埠 1186。如果啟用,則包含一組 NDB API 測試程式。預設為
OFF。-DWITH_NDB_TLS_SEARCH_PATH=path設定 ndb_sign_keys 和其他
NDB程式搜尋 TLS 憑證和金鑰檔案的預設路徑。Windows 平台的預設值為
$HOMEDIR/ndb-tls;其他平台(如 Linux)的預設值為$HOME/ndb-tls。