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 |
排除 Performance Schema 條件檢測 | OFF |
DISABLE_PSI_DATA_LOCK |
排除效能架構資料鎖定檢測 | OFF |
DISABLE_PSI_ERROR |
排除效能架構伺服器錯誤檢測 | OFF |
DISABLE_PSI_FILE |
排除 Performance Schema 檔案檢測 | OFF |
DISABLE_PSI_IDLE |
排除 Performance Schema 閒置檢測 | OFF |
DISABLE_PSI_MEMORY |
排除 Performance Schema 記憶體檢測 | OFF |
DISABLE_PSI_METADATA |
排除 Performance Schema 中繼資料檢測 | OFF |
DISABLE_PSI_MUTEX |
排除 Performance Schema 互斥鎖檢測 | OFF |
DISABLE_PSI_PS |
排除效能架構預備陳述式 | OFF |
DISABLE_PSI_RWLOCK |
排除 Performance Schema 讀寫鎖檢測 | OFF |
DISABLE_PSI_SOCKET |
排除 Performance Schema Socket 檢測 | OFF |
DISABLE_PSI_SP |
排除 Performance Schema 儲存的程式檢測 | OFF |
DISABLE_PSI_STAGE |
排除 Performance Schema 階段檢測 | OFF |
DISABLE_PSI_STATEMENT |
排除 Performance Schema 陳述式檢測 | OFF |
DISABLE_PSI_STATEMENT_DIGEST |
排除效能架構 statements_digest 檢測 | OFF |
DISABLE_PSI_TABLE |
排除 Performance Schema 資料表檢測 | 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 |
IGNORE_AIO_CHECK |
使用 -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 互斥鎖類型 | event |
MYSQLX_TCP_PORT |
X 外掛程式使用的 TCP/IP 通訊埠號碼 | 33060 |
MYSQLX_UNIX_ADDR |
X 外掛程式使用的 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 包含目錄 | |
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 |
是否在 macOS 上將 'get-task-allow' 權限新增至所有可執行檔,以便在伺服器意外停止時產生核心傾印 | OFF |
WITH_EDITLINE |
要使用哪個 libedit/editline 程式庫 | bundled |
WITH_ERROR_INSERT |
在 NDB 儲存引擎中啟用錯誤插入。不應將其用於建置預定用於生產的二進位檔。 | OFF |
WITH_ICU |
ICU 支援的類型 | bundled |
WITH_INNODB_EXTRA_DEBUG |
是否包含 InnoDB 的額外偵錯支援。 | OFF |
WITH_JEMALLOC |
是否連結 -ljemalloc | OFF |
WITH_LD |
是否使用 LLVM lld 或 mold 連接器 |
|
WITH_LIBEVENT |
要使用哪個 libevent 程式庫 | bundled |
WITH_LIBWRAP |
是否包含 libwrap (TCP 包裝函式) 支援 | OFF |
WITH_LOCK_ORDER |
是否啟用 LOCK_ORDER 工具 | OFF |
WITH_LSAN |
是否執行 LeakSanitizer,而不執行 AddressSanitizer | OFF |
WITH_LTO |
啟用連結時間最佳化工具 | OFF |
WITH_LZ4 |
LZ4 程式庫支援的類型 | bundled |
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。 | [none] |
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 套件 | bundled |
WITH_RAPID |
是否建置快速開發週期外掛程式 | ON |
WITH_RAPIDJSON |
RapidJSON 支援的類型 | bundled |
WITH_ROUTER |
是否建置 MySQL Router | ON |
WITH_SHOW_PARSE_TREE |
支援 SHOW PARSE_TREE 偵錯陳述式 | |
WITH_SSL |
SSL 支援的類型 | system |
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 支援的類型 | bundled |
WITH_ZSTD |
zstd 支援的類型 | bundled |
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
安裝的基礎目錄。
此值可以使用
--basedir
選項在伺服器啟動時設定。使用者程式的安裝位置。
文件資料的安裝位置。
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 節,「伺服器系統變數」中此變數的描述。程式庫檔案的安裝位置。
手冊頁面的安裝位置。
共用資料檔案的安裝位置。
mysql-test
目錄的安裝位置。若要取消安裝此目錄,請將選項明確設為空值 (-DINSTALL_MYSQLTESTDIR=
)。安裝 pkg-config 使用的
mysqlclient.pc
檔案的目錄。除非INSTALL_LIBDIR
以/mysql
結尾,否則預設值為INSTALL_LIBDIR/pkgconfig
,若為結尾,則會先移除。外掛程式目錄的位置。
此值可以使用
--plugin_dir
選項在伺服器啟動時設定。動態程式庫目錄的位置。
預設位置。對於 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=
目錄名稱
secure_file_priv
系統變數的預設值。預設值是平台特定的,且取決於INSTALL_LAYOUT
CMake 選項的值;請參閱 第 7.1.8 節,「伺服器系統變數」中secure_file_priv
系統變數的描述。aclocal/mysql.m4
的安裝位置。-DINSTALL_STATIC_LIBRARIES=
布林值
是否安裝靜態程式庫。預設值為
ON
。如果設為OFF
,則不會安裝這些程式庫檔案:libmysqlclient.a
、libmysqlservices.a
。-DINSTALL_SUPPORTFILESDIR=
目錄名稱
額外支援檔案的安裝位置。
是否隨機化 mysqld 二進位檔中的符號順序。預設值為
OFF
。此選項僅應為偵錯目的啟用。LINK_RANDOMIZE
選項的種子值。值為字串。預設值為mysql
,一個任意的選擇。MySQL 資料目錄的位置。
此值可以使用
--datadir
選項在伺服器啟動時設定。ODBC include 目錄的位置,可用於設定 Connector/ODBC。
ODBC 程式庫目錄的位置,可用於設定 Connector/ODBC。
預設
my.cnf
選項檔案目錄。此位置無法在伺服器啟動時設定,但您可以使用
--defaults-file=
選項,以給定的選項檔案啟動伺服器,其中檔案名稱
檔案名稱
是檔案的完整路徑名稱。當 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
(包含)。是否排除 Performance Schema 階段檢測。預設值為
OFF
(包含)。是否排除 Performance Schema 陳述式檢測。預設值為
OFF
(包含)。-DDISABLE_PSI_STATEMENT_DIGEST=
bool
是否排除 Performance Schema 陳述式摘要檢測。預設值為
OFF
(包含)。是否排除 Performance Schema 資料表檢測。預設值為
OFF
(包含)。排除 Performance Schema 預處理語句實例檢測。預設值為
OFF
(包含)。排除 Performance Schema 執行緒檢測。預設值為
OFF
(包含)。僅在不使用任何檢測的情況下建置時停用執行緒,因為其他檢測具有執行緒的依賴性。
-DDISABLE_PSI_TRANSACTION=
bool
排除 Performance Schema 交易檢測。預設值為
OFF
(包含)。排除 Performance Schema 資料鎖定檢測。預設值為
OFF
(包含)。排除 Performance Schema 伺服器錯誤檢測。預設值為
OFF
(包含)。-DENABLE_EXPERIMENTAL_SYSVARS=
bool
是否啟用實驗性的
InnoDB
系統變數。實驗性系統變數適用於從事 MySQL 開發的人員,僅應在開發或測試環境中使用,並且可能會在未來的 MySQL 版本中移除,恕不另行通知。有關實驗性系統變數的資訊,請參閱 MySQL 原始碼樹中的/storage/innobase/handler/ha_innodb.cc
。可以透過搜尋 「PLUGIN_VAR_EXPERIMENTAL」 來識別實驗性系統變數。是否在不使用 MySQL 伺服器的情況下建置。預設值為 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 Socket 連線的 Unix Socket 檔案路徑。這必須是一個絕對路徑名稱。預設值為
/tmp/mysqlx.sock
。這個值可以在伺服器啟動時使用
mysqlx_port
系統變數設定。對於 Windows 或 macOS,要併入專案檔案名稱的專案名稱。
伺服器監聽 TCP/IP 連線的連接埠號碼。預設值為 3306。
這個值可以在伺服器啟動時使用
--port
選項設定。伺服器監聽 Socket 連線的 Unix Socket 檔案路徑。這必須是一個絕對路徑名稱。預設值為
/tmp/mysql.sock
。這個值可以在伺服器啟動時使用
--socket
選項設定。是否支援最佳化追蹤。請參閱 MySQL 內部:追蹤最佳化器。
對於 Linux 系統上的建置,這個選項控制是否要額外注意建立獨立於建置位置和時間的建置結果。
對於
RelWithDebInfo
建置,此選項預設為ON
。CMake 預設使用標準連結器。您可以選擇性地傳入
lld
或mold
來指定替代的連結器。mold 必須是版本 2 或更新的版本。這個選項可以在非企業 Linux 的 Linux 系統上使用,企業 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,適用於支援它的編譯器。預設值為
OFF
。是否啟用 AddressSanitizer
-fsanitize-address-use-after-scope
Clang 標誌以進行 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.4 節,"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
選項編譯偵錯支援時,在UNIV_DEBUG
下定義了InnoDB
儲存引擎的同步偵錯檢查。當編譯偵錯支援時,可以使用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 使用 Unicode 國際組件 (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 程式。是否在不使用 AddressSanitizer 的情況下執行 LeakSanitizer。預設值為
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
。來源中包含
tcmalloc
函式庫;您可以將此選項設定為BUNDLED
,使建置使用綁定的版本。BUNDLED
僅在 Linux 系統上受支援。WITH_TCMALLOC
和WITH_JEMALLOC
互斥。是否建置測試協定追蹤用戶端外掛程式(請參閱使用測試協定追蹤外掛程式)。預設情況下,此選項停用。除非啟用
WITH_CLIENT_PROTOCOL_TRACING
選項,否則啟用此選項無效。如果 MySQL 設定為同時啟用這兩個選項,則會建置內建測試協定追蹤外掛程式的libmysqlclient
用戶端函式庫,並且所有標準 MySQL 用戶端都會載入此外掛程式。但是,即使啟用測試外掛程式,預設情況下也無效。使用環境變數來控制外掛程式;請參閱使用測試協定追蹤外掛程式。注意如果您想使用自己的協定追蹤外掛程式,請不要啟用
WITH_TEST_TRACE_PLUGIN
選項,因為一次只能載入一個此外掛程式,並且嘗試載入第二個外掛程式會發生錯誤。如果您已建置啟用測試協定追蹤外掛程式的 MySQL,以查看其運作方式,則必須重新建置沒有它的 MySQL,才能使用自己的外掛程式。有關撰寫追蹤外掛程式的資訊,請參閱撰寫協定追蹤外掛程式。
是否啟用 ThreadSanitizer,適用於支援它的編譯器。預設值為關閉。
是否啟用未定義行為檢測工具,適用於支援它的編譯器。預設值為關閉。
如果啟用,則使用單元測試編譯 MySQL。除非未編譯伺服器,否則預設值為
ON
。啟用 unixODBC 支援,適用於 Connector/ODBC。
是否編譯 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 叢集的 MySQL,您可以使用 -DWITH_NDB
,這會使組建包含 NDB 儲存引擎和所有 NDB 程式。預設會啟用此選項。若要防止組建 NDB 儲存引擎外掛程式,請使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF
。組建的其他方面可以使用本節中列出的其他選項來控制。
以下選項適用於使用 NDB 叢集支援組建 MySQL 原始碼時。
-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}
控制 NDB 公用程式(例如 ndb_drop_table)是以靜態方式 (
OFF
) 或動態方式 (ON
) 與ndbclient
連結;預設為OFF
(靜態連結)。通常,在組建這些公用程式時會使用靜態連結,以避免LD_LIBRARY_PATH
的問題,或者在安裝多個版本的ndbclient
時使用。此選項適用於建立 Docker 映像,以及目標環境受到精確控制且希望縮小映像大小的其他情況。設定用於組建 MySQL NDB 叢集 Java 連接器的類別路徑。預設為空。如果使用
-DWITH_NDB_JAVA=OFF
,則會忽略此選項。在
NDB
核心中啟用錯誤注入。僅用於測試;不打算用於組建生產二進位檔。預設為OFF
。組建 MySQL NDB 叢集;組建 NDB 外掛程式和所有 NDB 叢集程式。
-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 叢集二進位檔的偵錯版本。預設為
OFF
。啟用使用 Java 支援組建 NDB 叢集,包括對 ClusterJ 的支援(請參閱 MySQL NDB 叢集 Java 連接器)。
預設為
ON
。如果您不希望使用 Java 支援編譯 NDB 叢集,您必須在執行 CMake 時明確指定-DWITH_NDB_JAVA=OFF
來停用它。否則,如果找不到 Java,組建的設定將會失敗。導致組建的 NDB 叢集管理伺服器(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
。