1. 程式人生 > 實用技巧 >mysql8 編譯安裝 cmake引數

mysql8 編譯安裝 cmake引數

2020年7月31日14:11:54

需要注意的是mysql使用一分部boost的庫,所以需要會安裝boost,也很簡單

window安裝boost,https://www.cnblogs.com/zx-admin/p/11792567.html

linux安裝 下載地址https://dl.bintray.com/boostorg/release/1.73.0/source/

wget https://dl.bintray.com/boostorg/release/1.73.0/source/boost_1_73_0.tar.gz
tar xfboost_1_73_0.tar.gz -C /usr/local/ mv /usr/local/boost_1_60_0 /usr/local/boost

文件官方URL :https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

CMake的程式提供的控制權如何配置MySQL原始碼分發很大。通常,您可以使用CMake命令列上的選項來執行此操作有關CMake支援的選項的資訊,請在頂級源目錄中執行以下命令之一:

cmake . -LH
ccmake .

您還可以使用某些環境變數來影響CMake請參見第4.9節“環境變數”

對於布林選項,可以將值指定為1或ON啟用該選項,或者將其指定為0或OFF禁用該選項。

許多選項配置了編譯時預設值,這些預設值可以在伺服器啟動時被覆蓋。

例如,CMAKE_INSTALL_PREFIXMYSQL_TCP_PORT,和MYSQL_UNIX_ADDR該配置預設安裝基本目錄的位置,TCP / IP埠號和Unix套接字檔案選項可以在與伺服器啟動而改變--basedir--port--socket選項的mysqld在適用的情況下,配置選項描述指示相應的mysqld啟動選項。

以下各節提供有關CMake選項的更多資訊

CMake選項參考

下表顯示了可用的CMake選項。

在該Default列中,PREFIX代表CMAKE_INSTALL_PREFIX選項的值,該選項指定安裝基礎目錄。該值用作多個安裝子目錄的父位置。

表2.13 MySQL源配置選項參考(CMake)

格式描述預設介紹了已移除
ADD_GDB_INDEX 是否在二進位制檔案中啟用.gdb_index節的生成 8.0.18
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
CMAKE_INSTALL_PRIV_LIBDIR 安裝專用庫目錄 8.0.18
COMPILATION_COMMENT 關於編譯環境的評論
COMPILATION_COMMENT_SERVER 關於供mysqld使用的編譯環境的評論 8.0.14
COMPRESS_DEBUG_SECTIONS 壓縮二進位制可執行檔案的除錯部分 OFF 8.0.23
CPACK_MONOLITHIC_INSTALL 軟體包構建是否生成單個檔案 OFF
DEFAULT_CHARSET 預設伺服器字符集 utf8mb4
DEFAULT_COLLATION 預設伺服器排序規則 utf8mb4_0900_ai_ci
DISABLE_DATA_LOCK 排除效能模式資料鎖檢測 OFF
DISABLE_PSI_COND 排除效能模式條件檢測 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 排除效能模式rwlock工具 OFF
DISABLE_PSI_SOCKET 排除效能架構套接字工具 OFF
DISABLE_PSI_SP 排除效能模式儲存程式檢測 OFF
DISABLE_PSI_STAGE 排除效能模式階段檢測 OFF
DISABLE_PSI_STATEMENT 排除效能模式語句檢測 OFF
DISABLE_PSI_STATEMENT_DIGEST 排除效能模式語句_摘要工具 OFF
DISABLE_PSI_TABLE 排除效能模式表檢測 OFF
DISABLE_PSI_THREAD 排除效能架構執行緒檢測 OFF
DISABLE_PSI_TRANSACTION 排除效能架構事務檢測 OFF
DISABLE_SHARED 不建立共享庫,編譯位置相關的程式碼 OFF 8.0.18
DOWNLOAD_BOOST 是否下載Boost庫 OFF
DOWNLOAD_BOOST_TIMEOUT 下載Boost庫的超時時間(以秒為單位) 600
ENABLED_LOCAL_INFILE 是否為載入資料啟用本地 OFF
ENABLED_PROFILING 是否啟用查詢分析程式碼 ON
ENABLE_DOWNLOADS 是否下載可選檔案 OFF
ENABLE_EXPERIMENTAL_SYSVARS 是否啟用實驗性InnoDB系統變數 OFF
ENABLE_GCOV 是否包括gcov支援
ENABLE_GPROF 啟用gprof(僅針對優化的Linux構建) OFF
FORCE_INSOURCE_BUILD 是否強制進行原始碼構建 OFF 8.0.14
FORCE_UNSUPPORTED_COMPILER 是否允許不支援的編譯器 OFF
FPROFILE_GENERATE 是否生成配置檔案引導的優化資料 OFF 8.0.19
FPROFILE_USE 是否使用配置檔案引導的優化資料 OFF 8.0.19
IGNORE_AIO_CHECK 使用-DBUILD_CONFIG = mysql_release時,忽略libaio檢查 OFF
INSTALL_BINDIR 使用者可執行檔案目錄 PREFIX/bin
INSTALL_DOCDIR 文件目錄 PREFIX/docs
INSTALL_DOCREADMEDIR 自述檔案目錄 PREFIX
INSTALL_INCLUDEDIR 標頭檔案目錄 PREFIX/include
INSTALL_INFODIR 資訊檔案目錄 PREFIX/docs
INSTALL_LAYOUT 選擇預定義的安裝佈局 STANDALONE
INSTALL_LIBDIR 庫檔案目錄 PREFIX/lib
INSTALL_MANDIR 手冊頁目錄 PREFIX/man
INSTALL_MYSQLKEYRINGDIR keyring_file外掛資料檔案的目錄 platform specific
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_SBINDIR 伺服器可執行目錄 PREFIX/bin
INSTALL_SECURE_FILE_PRIVDIR secure_file_priv預設值 platform specific
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
MUTEX_TYPE InnoDB互斥鎖型別 event
MYSQLX_TCP_PORT X外掛使用的TCP / IP埠號 33060
MYSQLX_UNIX_ADDR X外掛使用的Unix套接字檔案 /tmp/mysqlx.sock
MYSQL_DATADIR 資料目錄
MYSQL_MAINTAINER_MODE 是否啟用特定於MySQL維護人員的開發環境 OFF
MYSQL_PROJECT_NAME Windows / OS X專案名稱 MySQL
MYSQL_TCP_PORT TCP / IP埠號 3306
MYSQL_UNIX_ADDR Unix套接字檔案 /tmp/mysql.sock
ODBC_INCLUDES ODBC包含目錄
ODBC_LIB_DIR ODBC庫目錄
OPTIMIZER_TRACE 是否支援優化器跟蹤
REPRODUCIBLE_BUILD 格外小心,以獨立於構建位置和時間來建立構建結果
SYSCONFDIR 選項檔案目錄
SYSTEMD_PID_DIR systemd下PID檔案的目錄 /var/run/mysqld
SYSTEMD_SERVICE_NAME systemd下的MySQL服務名稱 mysqld
TMPDIR tmpdir預設值
USE_LD_GOLD 是否使用GNU黃金鍊接器 ON
USE_LD_LLD 是否使用llvm lld連結器 ON 8.0.16
WIN_DEBUG_NO_INLINE 是否禁用功能內聯 OFF
WITHOUT_xxx_STORAGE_ENGINE 從構建中排除儲存引擎xxx
WITH_ANT 用於構建GCS Java包裝器的Ant路徑
WITH_ASAN 啟用AddressSanitizer OFF
WITH_ASAN_SCOPE 啟用AddressSanitizer -fsanitize-address-use-scope範圍Clang標誌 OFF
WITH_AUTHENTICATION_LDAP 如果無法構建LDAP認證外掛,是否報告錯誤 OFF
WITH_AUTHENTICATION_PAM 構建PAM身份驗證外掛 OFF
WITH_AWS_SDK Amazon Web Services軟體開發套件的位置
WITH_BOOST Boost庫原始碼的位置
WITH_CLIENT_PROTOCOL_TRACING 建立客戶端協議跟蹤框架 ON
WITH_CURL curl庫的位置
WITH_DEBUG 是否包括除錯支援 OFF
WITH_DEFAULT_COMPILER_OPTIONS 是否使用預設的編譯器選項 ON
WITH_DEFAULT_FEATURE_SET 是否使用預設功能集 ON 8.0.22
WITH_EDITLINE 使用哪個libedit / editline庫 bundled
WITH_GMOCK googlemock分發路徑
WITH_ICU ICU支援型別 bundled
WITH_INNODB_EXTRA_DEBUG 是否包括對InnoDB的額外除錯支援。 OFF
WITH_INNODB_MEMCACHED 是否生成memcached共享庫。 OFF
WITH_JEMALLOC 是否與-ljemalloc連結 OFF 8.0.16
WITH_KEYRING_TEST 建立金鑰環測試程式 OFF
WITH_LIBEVENT 使用哪個libevent庫 bundled
WITH_LIBWRAP 是否包括libwrap(TCP包裝器)支援 OFF
WITH_LOCK_ORDER 是否啟用LOCK_ORDER工具 OFF 8.0.17
WITH_LSAN 是否在沒有AddressSanitizer的情況下執行LeakSanitizer OFF 8.0.16
WITH_LTO 啟用連結時間優化器 OFF 8.0.13
WITH_LZ4 LZ4庫支援的型別 bundled
WITH_LZMA LZMA庫支援的型別 bundled 8.0.16
WITH_MECAB 編譯MeCab
WITH_MSAN 啟用MemorySanitizer OFF
WITH_MSCRT_DEBUG 啟用Visual Studio CRT記憶體洩漏跟蹤 OFF
WITH_MYSQLX 是否禁用X協議 ON
WITH_NUMA 設定NUMA記憶體分配策略
WITH_PROTOBUF 使用哪個協議緩衝區包 bundled
WITH_RAPID 是否構建快速的開發週期外掛 ON
WITH_RAPIDJSON RapidJSON支援的型別 bundled 8.0.13
WITH_RE2 RE2庫支援的型別 bundled 8.0.18
WITH_ROUTER 是否建立MySQL路由器 ON 8.0.16
WITH_SSL SSL支援型別 system
WITH_SYSTEMD 啟用系統支援檔案的安裝 OFF
WITH_SYSTEM_LIBS 設定未明確設定的庫選項的系統值 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_ZLIB zlib支援的型別 bundled
WITH_ZSTD zstd支援的型別 bundled 8.0.18
WITH_xxx_STORAGE_ENGINE 將儲存引擎xxx靜態編譯到伺服器中

常規選項

  • -DBUILD_CONFIG=mysql_release

    該選項使用與Oracle相同的構建選項來配置源分發,Oracle使用這些生成選項來為MySQL官方發行版生成二進位制分發。

  • -DBUNDLE_RUNTIME_LIBRARIES=bool

    是否將執行時庫與Windows的伺服器MSI和Zip軟體包捆綁在一起。

  • -DCMAKE_BUILD_TYPE=type

    生成的構建型別:

    • RelWithDebInfo:啟用優化並生成除錯資訊。這是預設的MySQL構建型別。

    • Release:啟用優化,但省略除錯資訊以減小構建大小。該構建型別是在MySQL 8.0.13中新增的。

    • Debug:禁用優化並生成除錯資訊。如果WITH_DEBUG啟用選項,則也使用此構建型別-DWITH_DEBUG=1具有與相同的效果-DCMAKE_BUILD_TYPE=Debug

  • -DCPACK_MONOLITHIC_INSTALL=bool

    此選項影響make軟體包操作是生成多個安裝軟體包檔案還是單個檔案。如果禁用,該操作將產生多個安裝包檔案,如果您只想安裝完整MySQL安裝的一部分,則可能很有用。如果啟用,它將生成一個用於安裝所有內容的檔案。

  • -DFORCE_INSOURCE_BUILD=bool

    定義是否強制進行源內構建。推薦使用源外版本,因為它們允許來自同一源的多個版本,並且可以通過刪除版本目錄來快速執行清理。要強制在程式碼構建,呼叫CMake的使用-DFORCE_INSOURCE_BUILD=ON

安裝佈局選項

CMAKE_INSTALL_PREFIX選項指示基本安裝目錄。具有指示元件位置的形式名稱的其他選項是相對於字首解釋的,並且它們的值是相對路徑名。它們的值不應包含字首。INSTALL_xxx

  • -DCMAKE_INSTALL_PREFIX=dir_name

    安裝基礎目錄。

    可以使用--basedir選項在伺服器啟動時設定此值

  • -DINSTALL_BINDIR=dir_name

    在哪裡安裝使用者程式。

  • -DINSTALL_DOCDIR=dir_name

    在哪裡安裝文件。

  • -DINSTALL_DOCREADMEDIR=dir_name

    在哪裡安裝README檔案。

  • -DINSTALL_INCLUDEDIR=dir_name

    在哪裡安裝標頭檔案。

  • -DINSTALL_INFODIR=dir_name

    在哪裡安裝資訊檔案。

  • -DINSTALL_LAYOUT=name

    選擇預定義的安裝佈局:

    • STANDALONE:與.tar.gz.zip軟體包使用的佈局相同這是預設值。

    • RPM:佈局類似於RPM軟體包。

    • SVR4:Solaris軟體包佈局。

    • DEB:DEB程式包佈局(實驗)。

    您可以選擇預定義的佈局,但可以通過指定其他選項來修改各個元件的安裝位置。例如:

    cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data

    INSTALL_LAYOUT值確定的預設值secure_file_privkeyring_encrypted_file_datakeyring_file_data系統變數。請參見第5.1.8節“伺服器系統變數”第6.4.4.12節“金鑰環系統變數”中對這些變數的描述

  • -DINSTALL_LIBDIR=dir_name

    在哪裡安裝庫檔案。

  • -DINSTALL_MANDIR=dir_name

    在哪裡安裝手冊頁。

  • -DINSTALL_MYSQLKEYRINGDIR=dir_path

    用作keyring_file外掛資料檔案位置的預設目錄預設值是特定於平臺的,並取決於CMake選項的值請參見第5.1.8節“伺服器系統變數”中對系統變數的描述INSTALL_LAYOUTkeyring_file_data

  • -DINSTALL_MYSQLSHAREDIR=dir_name

    在何處安裝共享資料檔案。

  • -DINSTALL_MYSQLTESTDIR=dir_name

    安裝mysql-test目錄的位置。要禁止安裝此目錄,請將選項顯式設定為空值(-DINSTALL_MYSQLTESTDIR=)。

  • -DINSTALL_PKGCONFIGDIR=dir_name

    pkg-configmysqlclient.pc使用的安裝檔案的目錄預設值為,除非以結尾,在這種情況下,該值將被首先刪除。INSTALL_LIBDIR/pkgconfigINSTALL_LIBDIR/mysql

  • -DINSTALL_PLUGINDIR=dir_name

    外掛目錄的位置。

    可以使用--plugin_dir選項在伺服器啟動時設定此值

  • -DINSTALL_PRIV_LIBDIR=dir_name

    動態庫目錄的位置。

    預設位置:RPM =/usr/lib64/mysql/private/,DEB =/usr/lib/mysql/private/和TAR =lib/private/

    該選項是在MySQL 8.0.18中新增的。

    對於Protobuf:由於這是一個私有位置,因此載入程式(例如Linux上的ld-linux.so)在libprotobuf.so沒有幫助的情況下可能找不到檔案。為了引導載入程式,RPATH將值$ ORIGIN /../$ INSTALL_PRIV_LIBDIR新增到mysqld和mysqlxtest中。這在大多數情況下都有效,但是在使用資源組功能時,mysqldsetsuid,然後載入程式會忽略RPATH其中包含$ORIGIN為了克服這個問題,在mysqld的DEB和RPM變體中設定了目錄的顯式完整路徑,因為已知目標位置。對於tarball安裝,需要使用patchelf之類的工具修補mysqld

  • -DINSTALL_SBINDIR=dir_name

    在哪裡安裝mysqld伺服器。

  • -DINSTALL_SECURE_FILE_PRIVDIR=dir_name

    secure_file_priv系統變數的預設值預設值是特定於平臺的,並取決於CMake選項的值請參見第5.1.8節“伺服器系統變數”中對系統變數的描述INSTALL_LAYOUTsecure_file_priv

  • -DINSTALL_SHAREDIR=dir_name

    在哪裡安裝aclocal/mysql.m4

  • -DINSTALL_STATIC_LIBRARIES=bool

    是否安裝靜態庫。預設值為ON如果設定為OFF,則不會安裝以下庫:libmysqlclient.alibmysqlservices.a

  • -DINSTALL_SUPPORTFILESDIR=dir_name

    在哪裡安裝其他支援檔案。

  • -DLINK_RANDOMIZE=bool

    是否隨機化mysqld二進位制檔案中符號的順序預設值為OFF應該僅出於除錯目的而啟用此選項。

  • -DLINK_RANDOMIZE_SEED=val

    LINK_RANDOMIZE選項的種子值該值是一個字串。預設值為mysql,是任意選擇。

  • -DMYSQL_DATADIR=dir_name

    MySQL資料目錄的位置。

    可以使用--datadir選項在伺服器啟動時設定此值

  • -DODBC_INCLUDES=dir_name

    ODBC的位置包括目錄,並且可以在配置聯結器/ ODBC時使用。

  • -DODBC_LIB_DIR=dir_name

    ODBC庫目錄的位置,可以在配置聯結器/ ODBC時使用。

  • -DSYSCONFDIR=dir_name

    預設my.cnf選項檔案目錄。

    無法在伺服器啟動時設定此位置,但是可以使用選項使用給定的選項檔案啟動伺服器,其中該檔案的完整路徑名是。--defaults-file=file_namefile_name

  • -DSYSTEMD_PID_DIR=dir_name

    當MySQL由systemd管理時,在其中建立PID檔案的目錄的名稱。預設值為/var/run/mysqld;這可能會根據INSTALL_LAYOUT隱式更改

    除非WITH_SYSTEMD啟用此選項,否則忽略它。

  • -DSYSTEMD_SERVICE_NAME=name

    MySQL由systemd管理時使用的MySQL服務的名稱。預設值為mysqld;這可能會根據INSTALL_LAYOUT隱式更改

    除非WITH_SYSTEMD啟用此選項,否則忽略它。

  • -DTMPDIR=dir_name

    tmpdir系統變數使用的預設位置如果未指定,則預設值為P_tmpdirin<stdio.h>

儲存引擎選項

儲存引擎是作為外掛構建的。您可以將外掛構建為靜態模組(編譯到伺服器中)或動態模組(構建為動態庫,必須使用該INSTALL PLUGIN語句或--plugin-load選項安裝到伺服器中,然後才能使用該外掛)。有些外掛可能不支援靜態或動態構建。

InnoDBMyISAMMERGEMEMORY,和CSV發動機是強制性的(總是編譯到伺服器)和無需顯式安裝。

要將儲存引擎靜態編譯到伺服器中,請使用一些可允許的,和支援)。例子:-DWITH_engine_STORAGE_ENGINE=1engineARCHIVEBLACKHOLEEXAMPLEFEDERATEDNDBNDBCLUSTERNDB

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
注意

如果沒有Performance Schema支援,則無法進行編譯。如果希望不使用特定型別的工具進行編譯,則可以使用以下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

功能選項

  • -DADD_GDB_INDEX=bool

    此選項確定是否啟用.gdb_index二進位制檔案中的節的生成,這將使它們更快地載入到偵錯程式中。該選項預設為禁用。使用lld連結器,並被禁用。如果使用lld或GNUgold以外的連結器,則該連結無效

    該選項是在MySQL 8.0.18中新增的。

  • -DCOMPILATION_COMMENT=string

    關於編譯環境的描述性評論。從MySQL 8.0.14開始,mysqld使用COMPILATION_COMMENT_SERVER其他程式繼續使用COMPILATION_COMMENT

  • -DCOMPRESS_DEBUG_SECTIONS=bool

    是否壓縮二進位制可執行檔案的除錯部分(僅Linux)。在構建過程中,壓縮可執行除錯節可以節省空間,但要花費額外的CPU時間。

    預設值為OFF如果未顯式設定此選項,但設定了COMPRESS_DEBUG_SECTIONS環境變數,則該選項將從該變數獲取其值。

    MySQL 8.0.23中添加了此選項。

  • -DCOMPILATION_COMMENT_SERVER=string

    關於mysqld使用的編譯環境的描述性註釋(例如,設定version_comment系統變數)。該選項是在MySQL 8.0.14中新增的。在8.0.14之前,伺服器使用COMPILATION_COMMENT

  • -DDEFAULT_CHARSET=charset_name

    伺服器字符集。預設情況下,MySQL使用utf8mb4字符集。

    charset_name可以是一種binaryarmscii8asciibig5cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf8utf8mb4utf16utf16leutf32允許的字符集在cmake/character_sets.cmake檔案中以的值列出CHARSETS_AVAILABLE

    可以使用--character_set_server選項在伺服器啟動時設定此值

  • -DDEFAULT_COLLATION=collation_name

    伺服器排序規則。預設情況下,MySQL使用utf8mb4_0900_ai_ci使用該SHOW COLLATION語句確定每個字符集可以使用哪些排序規則。

    可以使用--collation_server選項在伺服器啟動時設定此值

  • -DDISABLE_PSI_COND=bool

    是否排除效能模式條件檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_FILE=bool

    是否排除效能模式檔案檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_IDLE=bool

    是否排除效能模式空閒檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_MEMORY=bool

    是否排除效能模式記憶體檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_METADATA=bool

    是否排除效能模式元資料檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_MUTEX=bool

    是否排除效能架構互斥檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_RWLOCK=bool

    是否排除效能模式rwlock工具。預設值為OFF(包括)。

  • -DDISABLE_PSI_SOCKET=bool

    是否排除效能架構套接字工具。預設值為OFF(包括)。

  • -DDISABLE_PSI_SP=bool

    是否排除效能模式儲存程式工具。預設值為OFF(包括)。

  • -DDISABLE_PSI_STAGE=bool

    是否排除效能模式階段檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_STATEMENT=bool

    是否排除效能模式語句工具。預設值為OFF(包括)。

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    是否排除效能模式statement_digest工具。預設值為OFF(包括)。

  • -DDISABLE_PSI_TABLE=bool

    是否排除效能模式表工具。預設值為OFF(包括)。

  • -DDISABLE_SHARED=bool

    是否禁用構建構建共享庫並編譯與位置相關的程式碼。預設值為OFF(編譯與位置無關的程式碼)。

    此選項未使用,並已在MySQL 8.0.18中刪除。

  • -DDISABLE_PSI_PS=bool

    排除效能模式準備好的語句例項檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_THREAD=bool

    排除效能架構執行緒檢測。預設值為OFF(包括)。

    僅在構建時不使用任何工具時才禁用執行緒,因為其他工具對執行緒有依賴性。

  • -DDISABLE_PSI_TRANSACTION=bool

    排除效能架構事務檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_DATA_LOCK=bool

    排除效能模式資料鎖檢測。預設值為OFF(包括)。

  • -DDISABLE_PSI_ERROR=bool

    排除效能模式伺服器錯誤檢測。預設值為OFF(包括)。

  • -DDOWNLOAD_BOOST=bool

    是否下載Boost庫。預設值為OFF

    請參閱該WITH_BOOST選項,以獲取有關使用Boost的其他討論。

  • -DDOWNLOAD_BOOST_TIMEOUT=seconds

    下載Boost庫的超時時間(以秒為單位)。預設值為600秒。

    請參閱該WITH_BOOST選項,以獲取有關使用Boost的其他討論。

  • -DENABLE_DOWNLOADS=bool

    是否下載可選檔案。例如,啟用此選項後,CMake將下載測試套件用於執行單元測試的Google Test發行版,或構建GCS Java包裝程式所需的Ant和JUnit。

  • -DENABLE_EXPERIMENTAL_SYSVARS=bool

    是否啟用實驗InnoDB系統變數。實驗性系統變數是供那些從事MySQL開發的人員使用的,只能在開發或測試環境中使用,並且在將來的MySQL版本中可能會被刪除,恕不另行通知。有關實驗系統變數的資訊,請參見/storage/innobase/handler/ha_innodb.ccMySQL原始碼樹。可以通過搜尋PLUGIN_VAR_EXPERIMENTAL來識別實驗系統變數

  • -DENABLE_GCOV=bool

    是否包括gcov支援(僅Linux)。

  • -DENABLE_GPROF=bool

    是否啟用gprof(僅優化的Linux構建)。

  • -DENABLED_LOCAL_INFILE=bool

    此選項控制LOCALMySQL客戶端庫的內建預設功能。因此,沒有明確安排的客戶端將LOCAL根據ENABLED_LOCAL_INFILEMySQL構建時指定設定禁用或啟用功能

    預設情況下,MySQL二進位制發行版中的客戶端庫在ENABLED_LOCAL_INFILE禁用的情況下進行編譯如果從原始碼編譯MySQL,請ENABLED_LOCAL_INFILE根據未進行顯式安排的客戶端應LOCAL分別禁用還是啟用功能,將其配置為禁用或啟用。

    ENABLED_LOCAL_INFILE控制客戶端LOCAL功能的預設設定對於伺服器,local_infile系統變數控制伺服器端LOCAL功能。要明確原因伺服器拒絕或允許LOAD DATA LOCAL語句(不管有客戶程式和庫在構建時或執行時配置),啟動mysqld的local_infile分別禁用或啟用。local_infile也可以在執行時設定。請參見第6.1.6節“ LOAD DATA LOCAL的安全注意事項”

  • -DENABLED_PROFILING=bool

    是否啟用查詢概要分析程式碼(用於SHOW PROFILESHOW PROFILES語句)。

  • -DFORCE_UNSUPPORTED_COMPILER=bool

    預設情況下,CMake檢查支援的編譯器的最低版本:Visual Studio 2015(Windows);GCC 4.8或Clang 3.4(Linux);Developer Studio 12.5(Solaris伺服器);Developer Studio 12.4或GCC 4.8(Solaris客戶端庫);Clang 3.6(macOS),Clang 3.4(FreeBSD)。要禁用此檢查,請使用-DFORCE_UNSUPPORTED_COMPILER=ON

  • -DFPROFILE_GENERATE=bool

    是否生成配置檔案引導的優化(PGO)資料。該選項可用於在GCC上試用PGO。cmake/fprofile.cmake有關使用FPROFILE_GENERATE和的資訊,請參見MySQL原始碼分發中檔案FPROFILE_USE這些選項已在GCC 8和9中進行了測試。

    該選項是在MySQL 8.0.19中新增的。

  • -DFPROFILE_USE=bool

    是否使用配置檔案引導的優化(PGO)資料。該選項可用於在GCC上試用PGO。cmake/fprofile.cmake有關使用FPROFILE_GENERATE和的資訊,請參見MySQL原始碼分發中檔案FPROFILE_USE這些選項已在GCC 8和9中進行了測試。

    啟用FPROFILE_USE也會啟用WITH_LTO

    該選項是在MySQL 8.0.19中新增的。

  • -DIGNORE_AIO_CHECK=bool

    如果-DBUILD_CONFIG=mysql_release在Linux上提供了選項,則libaio預設情況下必須連結庫。如果您沒有libaio或不想安裝它,可以通過指定取消對它的檢查-DIGNORE_AIO_CHECK=1

  • -DMAX_INDEXES=num

    每個表的最大索引數。預設值為64。最大值為255。小於64的值將被忽略,並使用預設值64。

  • -DMYSQL_MAINTAINER_MODE=bool

    是否啟用特定於MySQL維護人員的開發環境。如果啟用,此選項將導致編譯器警告變為錯誤。

  • -DMUTEX_TYPE=type

    所使用的互斥鎖型別InnoDB選項包括:

    • event:使用事件互斥鎖。這是預設值和原始InnoDB互斥量實現。

    • sys注意:在UNIX系統上使用POSIX互斥鎖。CRITICAL_SECTION如果可用,在Windows上使用onject。

    • futex注意:使用Linux futexes代替條件變數來安排等待執行緒。

  • -DMYSQLX_TCP_PORT=port_num

    X外掛偵聽TCP / IP連線的埠號。預設值為33060。

    可以在伺服器啟動時使用mysqlx_port系統變數設定此值

  • -DMYSQLX_UNIX_ADDR=file_name

    伺服器在其上偵聽X外掛套接字連線的Unix套接字檔案路徑。這必須是絕對路徑名。預設值為/tmp/mysqlx.sock

    可以在伺服器啟動時使用mysqlx_port系統變數設定此值

  • -DMYSQL_PROJECT_NAME=name

    對於Windows或macOS,將專案名稱合併到專案檔名中。

  • -DMYSQL_TCP_PORT=port_num

    伺服器在其上偵聽TCP / IP連線的埠號。預設值為3306。

    可以使用--port選項在伺服器啟動時設定此值

  • -DMYSQL_UNIX_ADDR=file_name

    伺服器在其上偵聽套接字連線的Unix套接字檔案路徑。這必須是絕對路徑名。預設值為/tmp/mysql.sock

    可以使用--socket選項在伺服器啟動時設定此值

  • -DOPTIMIZER_TRACE=bool

    是否支援優化器跟蹤。參見MySQL內部:追蹤優化器

  • -DREPRODUCIBLE_BUILD=bool

    對於Linux系統上的構建,此選項控制是否要特別注意建立與構建位置和時間無關的構建結果。

    該選項是在MySQL 8.0.11中新增的。從MySQL 8.0.12開始,它預設ON用於RelWithDebInfo構建。

  • -DUSE_LD_GOLD=bool

    CMake使構建過程與GNUgold連結程式連結(如果可用且未明確禁用)。要禁用此連結器,請指定-DUSE_LD_GOLD=OFF選項。

  • -DUSE_LD_LLD=bool

    CMake使構建過程與Clangllvmlld連結程式連結(如果可用且未明確禁用)。要禁用此連結器,請指定-DUSE_LD_LLD=OFF選項。

    該選項是在MySQL 8.0.16中新增的。

  • -DWIN_DEBUG_NO_INLINE=bool

    是否在Windows上禁用功能內聯。預設為關閉(啟用內聯)。

  • -DWITH_ANT=path_name

    將路徑設定為構建GCS Java包裝器時所需的Ant。以與現有WITH_BOOSTCMake選項類似的方式工作設定WITH_ANT為Ant tarball或已經解壓縮的歸檔檔案儲存目錄的路徑。如果WITH_ANT未設定或使用特殊值設定system,則構建會假定中存在二進位制螞蟻$PATH

  • -DWITH_ASAN=bool

    是否為支援它的編譯器啟用AddressSanitizer。預設為關閉。

  • -DWITH_ASAN_SCOPE=bool

    是否啟用-fsanitize-address-use-after-scope用於範圍後使用檢測的AddressSanitizerClang標誌。預設為關閉。要使用此選項,-DWITH_ASAN還必須啟用。

  • -DWITH_AUTHENTICATION_LDAP=bool

    如果無法構建LDAP認證外掛,是否報告錯誤:

    • 如果禁用此選項(預設設定),則在找到所需的標頭檔案和庫的情況下將構建LDAP外掛。如果不是,則CMake會顯示一條註釋。

    • 如果啟用此選項,則找不到所需的標頭檔案和庫會導致CMake產生錯誤,從而阻止構建伺服器。

  • -DWITH_AUTHENTICATION_PAM=bool

    是否為包含此外掛的源樹構建PAM身份驗證外掛。(請參見第6.4.1.5節“ PAM可插入身份驗證”。)如果指定了該選項並且無法編譯外掛,則構建將失敗。

  • -DWITH_AWS_SDK=path_name

    Amazon Web Services軟體開發套件的位置。

  • -DWITH_BOOST=path_name

    Boost庫是構建MySQL所必需的。這些CMake選項可控制庫源位置以及是否自動下載:

    • -DWITH_BOOST=path_name指定Boost庫目錄位置。也可以通過設定BOOST_ROOTWITH_BOOST環境變數來指定Boost位置

      -DWITH_BOOST=system也被允許,並指示在標準位置的編譯主機上安裝了正確版本的Boost。在這種情況下,將使用已安裝的Boost版本,而不是MySQL原始碼發行版中包含的任何版本。

    • -DDOWNLOAD_BOOST=bool指定如果指定位置不存在Boost源,是否下載。預設值為OFF

    • -DDOWNLOAD_BOOST_TIMEOUT=seconds下載Boost庫的超時時間(以秒為單位)。預設值為600秒。

    例如,如果您通常構建MySQL並將物件輸出放置在bldMySQL源樹子目錄中,則可以使用Boost進行如下構建:

    mkdir bld
    cd bld
    cmake .. -DDOWNLOAD_BOOST=ON -DWITH_BOOST=$HOME/my_boost

    這將使Boost下載到主my_boost目錄下的目錄中。如果所需的Boost版本已經存在,則無需下載。如果所需的Boost版本更改,則下載較新的版本。

    如果已經在本地安裝Boost,並且編譯器自己找到了Boost標頭檔案,則可能不必指定前面的CMake選項。但是,如果MySQL所需的Boost版本更改並且本地安裝的版本尚未升級,則可能存在構建問題。使用CMake選項可以使您成功構建。

    使用上述允許Boost下載到指定位置的設定,當所需的Boost版本更改時,您需要刪除該bld資料夾,重新建立資料夾,然後再次執行cmake步驟。否則,可能不會下載新的Boost版本,並且編譯可能會失敗。

  • -DWITH_CLIENT_PROTOCOL_TRACING=bool

    是否將客戶端協議跟蹤框架構建到客戶端庫中。預設情況下,啟用此選項。

    有關編寫協議跟蹤客戶端外掛的資訊,請參見第29.2.4.11節“編寫協議跟蹤外掛”

    另請參閱WITH_TEST_TRACE_PLUGIN選項。

  • -DWITH_CURL=curl_type

    curl的位置curl_type可以是system(使用系統捲曲庫)或路徑名捲曲庫。

  • -DWITH_DEBUG=bool

    是否包括除錯支援。

    通過除錯支援配置MySQL,可以--debug="d,parser_debug"在啟動伺服器時使用該選項。這將導致用於處理SQL語句的Bison解析器將解析器跟蹤轉儲到伺服器的標準錯誤輸出。通常,此輸出將寫入錯誤日誌。

    InnoDB儲存引擎的同步除錯檢查在下定義,UNIV_DEBUG在使用WITH_DEBUG選項編譯除錯支援時可用編譯除錯支援後,innodb_sync_debug可使用配置選項啟用或禁用InnoDB同步除錯檢查。

    啟用WITH_DEBUG還啟用除錯同步。此工具用於測試和除錯。編譯時,預設情況下在執行時禁用“除錯同步”。要啟用它,請使用選項啟動mysqld,其中超時值大於0。(預設值為0,禁用除錯同步。)成為各個同步點的預設超時。--debug-sync-timeout=NNN

    InnoDB使用WITH_DEBUG選項編譯除錯支援時,可以使用儲存引擎的同步除錯檢查

    有關“除錯同步”工具以及如何使用同步點的說明,請參見《MySQL內部知識:測試同步》

  • -DWITH_DEFAULT_FEATURE_SET=bool

    是否使用中的標誌cmake/build_configurations/feature_set.cmake此選項已在MySQL 8.0.22中刪除。

  • -DWITH_EDITLINE=value

    使用哪個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安裝的路徑名。這可能比使用icu_type更好system因為它可以防止CMake檢測和使用系統上安裝的較舊或錯誤的ICU版本。(另一種允許執行相同操作的方法是將設定WITH_ICUsystem,並將CMAKE_PREFIX_PATH選項設定path_name。)

  • -DWITH_INNODB_EXTRA_DEBUG=bool

    是否包括額外的InnoDB除錯支援。

    啟用WITH_INNODB_EXTRA_DEBUG啟用額外的InnoDB除錯檢查。此選項僅在啟用後WITH_DEBUG才能啟用。

  • -DWITH_GMOCK=path_name

    googlemock發行版的路徑,用於基於Google Test的單元測試。選項值是分發Zip檔案的路徑。或者,將WITH_GMOCK環境變數設定為路徑名。也可以使用-DENABLE_DOWNLOADS=1CMake將從GitHub下載發行版。

    如果您構建的MySQL沒有基於Google Test的單元測試(通過配置wihoutWITH_GMOCK),則CMake會顯示一條訊息,指示如何下載它。

  • -DWITH_INNODB_MEMCACHED=bool

    是否生成memcached共享庫(libmemcached.soinnodb_engine.so)。

  • -DWITH_JEMALLOC=bool

    是否與連結-ljemalloc如果啟用,內建malloc()calloc()realloc(),和free()程式將被禁用。預設值為OFF

    該選項是在MySQL 8.0.16中新增的。

  • -DWITH_KEYRING_TEST=bool

    是否構建keyring_file外掛隨附的測試程式預設值為OFF測試檔案的原始碼位於plugin/keyring/keyring-test目錄中。

  • -DWITH_LIBEVENT=string

    libevent使用哪個庫。允許的值為bundled(預設值)system,和yes如果指定systemyeslibevent則使用系統庫(如果存在)。如果找不到系統庫,libevent則使用捆綁的庫。libevent庫是InnoDBmemcached必需的

  • -DWITH_LIBWRAP=bool

    是否包括libwrap(TCP包裝器)支援。

  • -DWITH_LOCK_ORDER=bool

    是否啟用LOCK_ORDER工具。預設情況下,此選項為禁用狀態,伺服器版本不包含任何工具。如果啟用了工具,則可以使用LOCK_ORDER工具,如第29.5.3節“ LOCK_ORDER工具”所述,可以使用LOCK_ORDER工具

    注意

    WITH_LOCK_ORDER啟用選項後,MySQL構建需要flex程式。

    該選項是在MySQL 8.0.17中新增的。

  • -DWITH_LSAN=bool

    是否執行不使用AddressSanitizer的LeakSanitizer。預設值為OFF

    該選項是在MySQL 8.0.16中新增的。

  • -DWITH_LTO=bool

    如果編譯器支援,則是否啟用連結時間優化器。OFF除非FPROFILE_USE啟用,否則預設為

    該選項是在MySQL 8.0.13中新增的。

  • -DWITH_LZ4=lz4_type

    WITH_LZ4指示的源zlib支援:

    • bundled:使用lz4與發行版捆綁在一起庫。這是預設值。

    • system:使用系統lz4庫。如果WITH_LZ4將設定為該值,則不會構建lz4_decompress實用程式。在這種情況下,可以改用systemlz4命令。

  • -DWITH_MSAN=bool

    是否為支援它的編譯器啟用MemorySanitizer。預設為關閉。

    為了使此選項生效(如果啟用),還必須在啟用該選項的情況下編譯連結到MySQL的所有庫。

  • -DWITH_MECAB={disabled|system|path_name}

    使用此選項編譯MeCab解析器。如果已將MeCab安裝到其預設安裝目錄,請設定-DWITH_MECAB=systemsystem選項適用於使用本機軟體包管理實用程式從源或二進位制檔案執行的MeCab安裝。如果已將MeCab安裝到自定義安裝目錄,請指定MeCab安裝的路徑。例如,-DWITH_MECAB=/opt/mecab如果該system選項不起作用,則在所有情況下都應指定MeCab安裝路徑。

    有關相關資訊,請參見第12.9.9節“ MeCab全文分析器外掛”

  • -DWITH_MSCRT_DEBUG=bool

    是否啟用Visual Studio CRT記憶體洩漏跟蹤。預設值為OFF

  • -DWITH_MYSQLX=bool

    是否使用X外掛支援進行構建。預設ON請參見第20章,將MySQL用作文件儲存

  • -DWITH_NUMA=bool

    明確設定NUMA記憶體分配策略。CMakeWITH_NUMA根據當前平臺是否NUMA支援設定預設對於不支援NUMA的平臺,CMake的行為如下:

    • 如果沒有NUMA選項(正常情況),CMake將繼續正常執行,僅產生以下警告:缺少NUMA庫或所需的版本不可用

    • 使用-DWITH_NUMA=ONCMake會因以下錯誤而中止:缺少NUMA庫或所需的版本不可用

  • -DWITH_PROTOBUF=protobuf_type

    使用哪個協議緩衝區包。protobuf_type可以是以下值之一:

    • bundled:使用與發行版捆綁在一起的軟體包。這是預設值。(可選)用於INSTALL_PRIV_LIBDIR修改動態Protobuf庫目錄。

    • system:使用系統上安裝的軟體包。

    其他值將被忽略,後退為bundled

  • -DWITH_RAPID=bool

    是否構建快速開發週期的外掛。啟用後,將rapid在構建樹中建立一個包含這些外掛的目錄。禁用後,不會rapid在構建樹中建立任何目錄。ON除非rapid目錄從源樹中刪除,否則預設值為在這種情況下預設值為OFF

  • -DWITH_RAPIDJSON=rapidjson_type

    要包括的RapidJSON庫支援的型別。rapidjson_type可以是以下值之一:

    • bundled:使用與發行版捆綁在一起的RapidJSON庫。這是預設值。

    • system:使用系統RapidJSON庫。需要版本1.1.0或更高版本。

    該選項是在MySQL 8.0.13中新增的。

  • -DWITH_LZMA=lzma_type

    要包括的LZMA庫支援的型別。lzma_type可以是以下值之一:

    • bundled:使用與發行版捆綁在一起的LZMA庫。這是預設值。

    • system:使用系統LZMA庫。

    此選項已在MySQL 8.0.16中刪除。

  • -DWITH_RE2=re2_type

    要包括的RE2庫支援的型別。re2_type可以是以下值之一:

    • bundled:使用與發行版捆綁在一起的RE2庫。這是預設值。

    • system:使用系統RE2庫。

    從MySQL 8.0.18開始,MySQL不再使用RE2庫,並且刪除了此選項。

  • -DWITH_ROUTER=bool

    是否建立MySQL路由器。預設值為ON

    該選項是在MySQL 8.0.16中新增的。

  • -DWITH_SSL={ssl_type|path_name}

    為了支援加密連線,用於生成隨機數的熵以及其他與加密相關的操作,必須使用SSL庫來構建MySQL。此選項指定要使用的SSL庫。

    • ssl_type可以是以下值之一:

      • system:使用系統OpenSSL庫。這是預設值。

        在macOS和Windows上,使用可以system配置MySQL以進行構建,就像呼叫CMake時path_name指向指向手動安裝的OpenSSL庫一樣。這是因為它們沒有系統SSL庫。在macOS上,brew install openssl安裝到/usr/local/opt/opensslsystem會找到它。在Windows上,它檢查%ProgramFiles%/ OpenSSL%ProgramFiles%/ OpenSSL-Win32%ProgramFiles%/ OpenSSL-Win64C:/ OpenSSLC:/ OpenSSL-Win32C:/ OpenSSL-Win64

      • yes:這是的同義詞system

    • path_name是要使用的OpenSSL安裝的路徑名。最好使用ssl_type值of,system因為它可以防止CMake檢測和使用系統上安裝的較舊或錯誤的OpenSSL版本。(另一種允許執行相同操作的方法是將設定WITH_SSLsystem,並將CMAKE_PREFIX_PATH選項設定path_name。)

    有關配置SSL庫的更多資訊,請參見第2.9.6節“配置SSL庫支援”

  • -DWITH_SYSTEMD=bool

    是否啟用安裝systemd支援檔案。預設情況下,此選項處於禁用狀態。啟用後,將安裝systemd支援檔案,並且不會安裝諸如mysqld_safe和System V初始化指令碼之類的指令碼。在無法使用systemd的平臺上,啟用會WITH_SYSTEMD導致CMake錯誤

    有關使用systemd的更多資訊,請參見第2.5.9節“使用systemd管理MySQL Server”該部分還包括有關指定[mysqld_safe]選項組中先前指定的選項的資訊。因為使用systemd時未安裝mysqld_safe,所以必須以其他方式指定此類選項。

  • -DWITH_SYSTEM_LIBS=bool

    此選項充當保護傘選項來設定system的以下任一值CMake的選項未明確設定:WITH_CURLWITH_EDITLINEWITH_ICUWITH_LIBEVENTWITH_LZ4WITH_LZMAWITH_PROTOBUFWITH_RE2WITH_SSLWITH_ZLIBWITH_ZSTD

  • -DWITH_TEST_TRACE_PLUGIN=bool

    是否構建測試協議跟蹤客戶端外掛(請參見第29.2.4.11.1節“使用測試協議跟蹤外掛”)。預設情況下,此選項處於禁用狀態。除非啟用該選項,否則啟用此選項無效WITH_CLIENT_PROTOCOL_TRACING如果MySQL同時配置了這兩個選項,則將使用libmysqlclient內建的測試協議跟蹤外掛來構建客戶端庫,並且所有標準MySQL客戶端都將載入該外掛。但是,即使啟用了測試外掛,預設情況下它也不起作用。使用環境變數可以控制外掛。請參見第29.2.4.11.1節“使用測試協議跟蹤外掛”

    注意

    不要啟用WITH_TEST_TRACE_PLUGIN,如果你想使用自己的協議跟蹤的外掛,因為只有一個這樣的外掛可以在同一時間被載入並出現錯誤嘗試載入第二個選項。如果已經構建了啟用了測試協議跟蹤外掛的MySQL以檢視其工作原理,則必須在沒有MySQL的情況下重新構建MySQL,然後才能使用自己的外掛。

    有關編寫跟蹤外掛的資訊,請參見第29.2.4.11節“編寫協議跟蹤外掛”

  • -DWITH_TSAN=bool

    是否為支援它的編譯器啟用ThreadSanitizer。預設為關閉。

  • -DWITH_UBSAN=bool

    是否為支援它的編譯器啟用“未定義行為清理器”。預設為關閉。

  • -DWITH_UNIT_TESTS={ON|OFF}

    如果啟用,請使用單元測試編譯MySQL。除非未編譯伺服器,否則預設值為ON。

  • -DWITH_UNIXODBC=1

    為聯結器/ ODBC啟用unixODBC支援。

  • -DWITH_VALGRIND=bool

    是否在Valgrind標頭檔案中進行編譯,這會將Valgrind API暴露給MySQL程式碼。預設值為OFF

    要生成可識別Valgrind的除錯版本,-DWITH_VALGRIND=1通常與結合使用-DWITH_DEBUG=1請參閱構建除錯配置

  • -DWITH_ZLIB=zlib_type

    某些功能要求伺服器使用壓縮庫支援構建,例如COMPRESS()UNCOMPRESS()功能,以及客戶端/伺服器協議的壓縮。WITH_ZLIB指示的源zlib支援:

    • bundled:使用zlib與發行版捆綁在一起庫。這是預設值。

    • system:使用系統zlib庫。如果WITH_ZLIB將此值設定為,則不會構建zlib_decompress實用程式。在這種情況下,可以改為使用系統openssl zlib命令。

  • -DWITH_ZSTD=zstd_type

    使用該zstd演算法的連線壓縮(請參見第4.2.8節“連線壓縮控制”)需要使用zstd庫支援構建伺服器WITH_ZSTD指示的源zstd支援:

    • bundled:使用zstd與發行版捆綁在一起庫。這是預設值。

    • system:使用系統zstd庫。

    該選項是在MySQL 8.0.18中新增的。

編譯器標誌

  • -DCMAKE_C_FLAGS="flags

    C編譯器的標誌。

  • -DCMAKE_CXX_FLAGS="flags

    C ++編譯器的標誌。

  • -DWITH_DEFAULT_COMPILER_OPTIONS=bool

    是否使用中的標誌cmake/build_configurations/compiler_options.cmake

    注意

    所有的優化標誌都是由MySQL構建團隊精心選擇和測試的。覆蓋它們會導致意外的結果,後果自負。

要指定自己的C和C ++編譯器標誌,對於不影響優化的標誌,請使用CMAKE_C_FLAGSCMAKE_CXX_FLAGSCMake選項。

提供自己的編譯器標誌時,您可能還需要指定CMAKE_BUILD_TYPE

例如,要在64位Linux機器上建立32位發行版,請執行以下操作:

mkdir bld
cd bld
cmake .. -DCMAKE_C_FLAGS=-m32 \
  -DCMAKE_CXX_FLAGS=-m32 \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo

如果設定影響優化的標誌(),則必須設定和/或選項,其中對應於該值。要為預設的構建型別(指定其他優化,請設定選項。例如,要在具有除錯符號的Linux上進行編譯,請執行以下操作:-OnumberCMAKE_C_FLAGS_build_typeCMAKE_CXX_FLAGS_build_typebuild_typeCMAKE_BUILD_TYPERelWithDebInfoCMAKE_C_FLAGS_RELWITHDEBINFOCMAKE_CXX_FLAGS_RELWITHDEBINFO-O3

cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"

用於編譯NDB群集的CMake選項

在構建具有NDB Cluster支援的MySQL 8.0源時,可以使用以下選項。

  • -DMEMCACHED_HOME=dir_name

    使用安裝在由指示的系統目錄中的memcached(1.6版或更高版本)執行構建dir_name此安裝中用於構建的檔案包括memcached二進位制檔案,標頭檔案和庫,以及memcached_utilities庫和標頭檔案engine_testapp.h

    ndbmemcache使用捆綁的記憶體快取源(WITH_BUNDLED_MEMCACHED選件)進行構建時,必須將此選項保持未設定狀態換句話說,預設情況下使用捆綁的來源。

    雖然從外部源編譯記憶體快取時可以使用其他CMake選項(例如,用於SASL授權和提供dtrace支援),但當前未為與NDB Cluster捆綁在一起記憶體快取啟用這些選項

  • -DWITH_BUNDLED_LIBEVENT={ON|OFF}

    libeventndbmemcached支援的情況下構建NDB群集時,請使用NDB群集源中包含的資源預設啟用。OFF導致libevent改為使用系統

  • -DWITH_BUNDLED_MEMCACHED={ON|OFF}

    構建NDB群集源樹中包含的memcached源,然後在構建ndbmemcache引擎時使用生成的memcached伺服器在這種情況下,make installmemcached二進位制檔案放置在安裝bin目錄中,並將ndbmemcache引擎共享庫檔案ndb_engine.so放置在安裝lib目錄中。

    預設情況下,此選項為ON。

  • -DWITH_CLASSPATH=path

    設定用於構建NDB Cluster Connector for Java的類路徑。預設為空。如果-DWITH_NDB_JAVA=OFF使用此選項,則將忽略

  • -DWITH_ERROR_INSERT={ON|OFF}

    NDB核心中啟用錯誤注入僅用於測試;不適用於構建生產二進位制檔案。預設值為OFF

  • -DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}

    這是的別名WITH_NDBCLUSTER

  • -DWITH_NDBCLUSTER={ON|OFF}

    建立並連結對mysqld中NDBNDBCLUSTER)儲存引擎的支援預設值為ON

  • -DWITH_NDBMTD={ON|OFF}

    構建多執行緒資料節點可執行檔案ndbmtd預設值為ON

  • -DWITH_NDB_BINLOG={ON|OFF}

    預設情況下,在使用此選項構建mysqld中啟用二進位制日誌記錄預設為開。

  • -DWITH_NDB_DEBUG={ON|OFF}

    啟用構建NDB群集二進位制檔案的除錯版本。預設關閉。

  • -DWITH_NDB_JAVA={ON|OFF}

    啟用通過Java支援(包括)構建NDB ClusterClusterJ

    預設情況下,此選項為ON。如果您不希望在Java支援下編譯NDB Cluster,則必須通過指定-DWITH_NDB_JAVA=OFF在執行CMake顯式禁用它否則,如果找不到Java,則構建的配置將失敗。

  • -DWITH_NDB_PORT=port

    使NDB群集管理伺服器(ndb_mgmdport預設情況下使用此伺服器如果未設定此選項,則預設情況下,結果管理伺服器將嘗試使用埠1186。

  • -DWITH_NDB_TEST={ON|OFF}

    如果啟用,請包括一組NDB API測試程式。預設為關閉。

  • -DWITH_PLUGIN_NDBCLUSTER={ON|OFF}

    的別名WITH_NDBCLUSTER