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

posted on 2020-07-31 14:18  zh7314  阅读(1313)  评论(0编辑  收藏  举报