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/data
INSTALL_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_LAYOUT
CMake 選項的值;請參閱 第 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_name
file_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-scope
Clang 旗標以偵測 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,其中N
N
是大於 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_type
path_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 上的version
openssl11
,或 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
),則必須設定 number
CMAKE_C_FLAGS_
和/或 build_type
CMAKE_CXX_FLAGS_
選項,其中 build_type
build_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
。