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_PREFIX, MYSQL_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_priv, keyring_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_LAYOUT keyring_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中。這在大多數情況下都有效,但是在使用資源組功能時,mysqld是 setsuid,然后加載程序會忽略 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_LAYOUT secure_file_priv

  • -DINSTALL_SHAREDIR=dir_name

    在哪里安裝aclocal/mysql.m4

  • -DINSTALL_STATIC_LIBRARIES=bool

    是否安裝靜態庫。默認值為 ON如果設置為OFF,則不會安裝以下庫: libmysqlclient.a, libmysqlservices.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 選項安裝到服務器中,然后才能使用該插件)。有些插件可能不支持靜態或動態構建。

InnoDB, MyISAM, MERGE, MEMORY,和 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或GNU gold以外的鏈接器,則該鏈接無效 

    該選項是在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可以是一種 binaryarmscii8, asciibig5, cp1250cp1251, cp1256cp1257, cp850cp852, cp866cp932, dec8eucjpms, euckrgb2312, gbkgeostd8, greekhebrew, hp8keybcs2, koi8rkoi8u, latin1latin2, latin5latin7, maccemacroman, sjisswe7, tis620ucs2, ujisutf8, utf8mb4utf16, utf16leutf32允許的字符集在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.cc MySQL源代碼樹。可以通過搜索“ 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 PROFILE和 SHOW 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使構建過程與GNU gold鏈接程序鏈接(如果可用且未明確禁用)。要禁用此鏈接器,請指定 -DUSE_LD_GOLD=OFF選項。

  • -DUSE_LD_LLD=bool

    CMake使構建過程與 Clang llvm lld鏈接程序鏈接(如果可用且未明確禁用)。要禁用此鏈接器,請指定 -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用於范圍后使用檢測的AddressSanitizer Clang標志。默認為關閉。要使用此選項,-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_ROOT或 WITH_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

    使用哪個libediteditline 庫。允許的值為 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_ICU 為system,並將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=1, CMake將從GitHub下載發行版。

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

  • -DWITH_INNODB_MEMCACHED=bool

    是否生成memcached共享庫(libmemcached.so和 innodb_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如果指定system或 yeslibevent則使用系統 庫(如果存在)。如果找不到系統庫,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實用程序。在這種情況下,可以改用system lz4命令。

  • -DWITH_MSAN=bool

    是否為支持它的編譯器啟用MemorySanitizer。默認為關閉。

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

  • -DWITH_MECAB={disabled|system|path_name}

    使用此選項編譯MeCab解析器。如果已將MeCab安裝到其默認安裝目錄,請設置 -DWITH_MECAB=system該 system選項適用於使用本機軟件包管理實用程序從源或二進制文件執行的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=ON, CMake會因以下錯誤而中止:缺少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_typepath_name}

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

    • ssl_type 可以是以下值之一:

      • system:使用系統OpenSSL庫。這是默認值。

        在macOS和Windows上,使用可以 system配置MySQL以進行構建,就像調用CMake時 path_name指向指向手動安裝的OpenSSL庫一樣。這是因為它們沒有系統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

    • 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_CURL, WITH_EDITLINE, WITH_ICU, WITH_LIBEVENT, WITH_LZ4, WITH_LZMA, WITH_PROTOBUF, WITH_RE2, WITH_SSL, WITH_ZLIB, WITH_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_FLAGS和 CMAKE_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 install將 memcached二進制文件放置在安裝 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中NDB (NDBCLUSTER)存儲引擎的 支持 默認值為 。 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 Cluster ClusterJ

    默認情況下,此選項為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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM