CMake程序提供了对如何配置 MySQL 源代码分发的大量控制 。通常,您使用 CMake命令行上的选项来执行此操作。有关CMake支持的选项的信息,请在顶级源目录中运行以下任一命令:
cmake . -LH
ccmake .您还可以使用某些环境变量影响CMake 。请参阅 第 4.9 节,“环境变量”。
      对于布尔选项,该值可以指定为 1 或
      ON启用该选项,或指定为 0 或
      OFF禁用该选项。
    
      许多选项配置可以在服务器启动时覆盖的编译时默认值。例如,
      配置默认安装基本目录位置、TCP/IP 端口号和 Unix 套接字文件的 、 和 选项可以在服务器启动时使用CMAKE_INSTALL_PREFIXmysqld
      MYSQL_TCP_PORT的
      、和
      选项
      进行
      更改。在适用的情况下,配置选项说明指示相应的mysqld
      启动选项。
    MYSQL_UNIX_ADDR--basedir--port--socket
以下部分提供了有关 CMake选项的更多信息。
        下表显示了可用的CMake
        选项。在该Default列中,
        PREFIX代表
        CMAKE_INSTALL_PREFIX选项的值,它指定安装基目录。此值用作多个安装子目录的父位置。
表 2.14 MySQL 源配置选项参考(CMake)
| 格式 | 描述 | 默认 | 介绍 | 删除 | 
|---|---|---|---|---|
| BUILD_CONFIG | 使用与官方版本相同的构建选项 | |||
| CMAKE_BUILD_TYPE | 要生成的构建类型 | RelWithDebInfo | ||
| CMAKE_CXX_FLAGS | C++ 编译器的标志 | |||
| CMAKE_C_FLAGS | C 编译器的标志 | |||
| CMAKE_INSTALL_PREFIX | 安装基目录 | /usr/local/mysql | ||
| COMPILATION_COMMENT | 编译环境评论 | |||
| CPACK_MONOLITHIC_INSTALL | 打包构建是否产生单个文件 | OFF | ||
| DEFAULT_CHARSET | 默认服务器字符集 | latin1 | ||
| DEFAULT_COLLATION | 默认服务器排序规则 | latin1_swedish_ci | ||
| DISABLE_PSI_COND | 排除性能模式条件检测 | OFF | ||
| DISABLE_PSI_FILE | 排除性能架构文件检测 | OFF | ||
| DISABLE_PSI_IDLE | 排除 Performance Schema 空闲检测 | 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 | 排除 Performance Schema 存储的程序检测 | OFF | ||
| DISABLE_PSI_STAGE | 排除 Performance Schema 阶段检测 | OFF | ||
| DISABLE_PSI_STATEMENT | 排除 Performance Schema 语句检测 | OFF | ||
| DISABLE_PSI_STATEMENT_DIGEST | 排除 Performance Schema statements_digest 检测 | OFF | ||
| DISABLE_PSI_TABLE | 排除性能架构表检测 | OFF | ||
| DISABLE_PSI_THREAD | 排除性能模式线程检测 | OFF | ||
| DISABLE_PSI_TRANSACTION | 排除性能模式事务检测 | OFF | ||
| DOWNLOAD_BOOST | 是否下载Boost库 | OFF | ||
| DOWNLOAD_BOOST_TIMEOUT | 下载 Boost 库的超时秒数 | 600 | ||
| ENABLED_LOCAL_INFILE | 是否为LOAD DATA启用LOCAL | OFF | ||
| ENABLED_PROFILING | 是否启用查询分析代码 | ON | ||
| ENABLE_DOWNLOADS | 是否下载可选文件 | OFF | ||
| ENABLE_DTRACE | 是否包含 DTrace 支持 | |||
| ENABLE_GCOV | 是否包含 gcov 支持 | |||
| ENABLE_GPROF | 启用 gprof(仅限优化的 Linux 版本) | OFF | ||
| FORCE_UNSUPPORTED_COMPILER | 是否允许不支持的编译器 | OFF | ||
| 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 | 5.7.11 | |
| INSTALL_MYSQLSHAREDIR | 共享数据目录 | PREFIX/share | ||
| INSTALL_MYSQLTESTDIR | mysql测试目录 | PREFIX/mysql-test | ||
| INSTALL_PKGCONFIGDIR | mysqlclient.pc pkg-config 文件的目录 | INSTALL_LIBDIR/pkgconfig | ||
| INSTALL_PLUGINDIR | 插件目录 | PREFIX/lib/plugin | ||
| INSTALL_SBINDIR | 服务器可执行目录 | PREFIX/bin | ||
| INSTALL_SCRIPTDIR | 脚本目录 | PREFIX/scripts | ||
| INSTALL_SECURE_FILE_PRIVDIR | secure_file_priv 默认值 | platform specific | ||
| INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR | libmysqld 的 secure_file_priv 默认值 | |||
| INSTALL_SHAREDIR | aclocal/mysql.m4 安装目录 | PREFIX/share | ||
| INSTALL_SUPPORTFILESDIR | 额外的支持文件目录 | PREFIX/support-files | ||
| MAX_INDEXES | 每个表的最大索引 | 64 | ||
| MEMCACHED_HOME | 内存缓存路径;过时的 | [none] | 5.7.33 | |
| MUTEX_TYPE | InnoDB 互斥量类型 | event | ||
| MYSQLX_TCP_PORT | X 插件使用的 TCP/IP 端口号 | 33060 | 5.7.17 | |
| MYSQLX_UNIX_ADDR | X 插件使用的 Unix 套接字文件 | /tmp/mysqlx.sock | 5.7.15 | |
| MYSQL_DATADIR | 数据目录 | |||
| MYSQL_MAINTAINER_MODE | 是否开启MySQL maintainer-specific开发环境 | OFF | ||
| MYSQL_PROJECT_NAME | Windows/macOS 项目名称 | 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 | 格外小心地创建独立于构建位置和时间的构建结果 | 5.7.19 | ||
| SUNPRO_CXX_LIBRARY | Solaris 10+ 上的客户端链接库 | |||
| 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_ASAN | 启用 AddressSanitizer | OFF | ||
| WITH_ASAN_SCOPE | 启用 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志 | OFF | 5.7.21 | |
| WITH_AUTHENTICATION_LDAP | LDAP认证插件无法搭建是否报错 | OFF | 5.7.19 | |
| WITH_AUTHENTICATION_PAM | 构建 PAM 身份验证插件 | OFF | ||
| WITH_AWS_SDK | Amazon Web Services 软件开发工具包的位置 | 5.7.19 | ||
| WITH_BOOST | Boost 库源的位置 | |||
| WITH_BUNDLED_LIBEVENT | 构建 ndbmemcache 时使用捆绑的 libevent;过时的 | ON | 5.7.33 | |
| WITH_BUNDLED_MEMCACHED | 构建 ndbmemcache 时使用捆绑的 memcached;过时的 | ON | 5.7.33 | |
| WITH_CLASSPATH | 为 Java 构建 MySQL Cluster Connector 时使用的类路径。默认为空字符串。 |  | ||
| WITH_CLIENT_PROTOCOL_TRACING | 构建客户端协议跟踪框架 | ON | ||
| WITH_CURL | curl 库的位置 | 5.7.19 | ||
| WITH_DEBUG | 是否包括调试支持 | OFF | ||
| WITH_DEFAULT_COMPILER_OPTIONS | 是否使用默认的编译器选项 | ON | ||
| WITH_DEFAULT_FEATURE_SET | 是否使用默认特征集 | ON | ||
| WITH_EDITLINE | 使用哪个 libedit/editline 库 | bundled | ||
| WITH_EMBEDDED_SERVER | 是否搭建嵌入式服务器 | OFF | ||
| WITH_EMBEDDED_SHARED_LIBRARY | 是否构建共享嵌入式服务器库 | OFF | ||
| WITH_ERROR_INSERT | 在 NDB 存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。 | OFF | ||
| WITH_EXTRA_CHARSETS | 要包括哪些额外的字符集 | all | ||
| WITH_GMOCK | googlemock 分发路径 | |||
| WITH_INNODB_EXTRA_DEBUG | 是否包括对 InnoDB 的额外调试支持。 | OFF | ||
| WITH_INNODB_MEMCACHED | 是否生成 memcached 共享库。 | OFF | ||
| WITH_KEYRING_TEST | 构建密钥环测试程序 | OFF | 5.7.11 | |
| WITH_LDAP | 限内部使用 | 5.7.29 | ||
| WITH_LIBEVENT | 使用哪个 libevent 库 | bundled | ||
| WITH_LIBWRAP | 是否包括 libwrap (TCP wrappers) 支持 | OFF | ||
| WITH_LZ4 | LZ4 库支持的类型 | bundled | 5.7.14 | |
| WITH_MECAB | 编译 MeCab | |||
| WITH_MSAN | 启用 MemorySanitizer | OFF | ||
| WITH_MSCRT_DEBUG | 启用 Visual Studio CRT 内存泄漏跟踪 | OFF | ||
| WITH_NDBAPI_EXAMPLES | 构建 API 示例程序 | OFF | ||
| WITH_NDBCLUSTER | 构建 NDB 存储引擎 | ON | ||
| WITH_NDBCLUSTER_STORAGE_ENGINE | 供内部使用;可能无法在所有情况下都按预期工作;用户应该改用 WITH_NDBCLUSTER | ON | ||
| WITH_NDBMTD | 构建多线程数据节点。 | ON | ||
| WITH_NDB_BINLOG | mysqld 默认启用二进制日志记录。 | ON | ||
| WITH_NDB_DEBUG | 生成用于测试或故障排除的调试版本。 | OFF | ||
| WITH_NDB_JAVA | 启用 Java 和 ClusterJ 支持的构建。默认启用。仅在 MySQL 集群中受支持。 | ON | ||
| WITH_NDB_PORT | 使用此选项构建的管理服务器使用的默认端口。如果未使用此选项来构建它,则管理服务器的默认端口为 1186。 | [none] | ||
| WITH_NDB_TEST | 包括 NDB API 测试程序。 | OFF | ||
| WITH_NUMA | 设置 NUMA 内存分配策略 | 5.7.17 | ||
| WITH_PROTOBUF | 使用哪个 Protocol Buffers 包 | bundled | 5.7.12 | |
| WITH_RAPID | 是否构建快速开发周期插件 | ON | 5.7.12 | |
| WITH_SASL | 限内部使用 | 5.7.29 | ||
| WITH_SSL | SSL 支持类型 | system | ||
| WITH_SYSTEMD | 启用系统支持文件的安装 | OFF | ||
| WITH_TEST_TRACE_PLUGIN | 构建测试协议跟踪插件 | OFF | ||
| WITH_UBSAN | 启用未定义的行为消毒器 | OFF | ||
| WITH_UNIT_TESTS | 使用单元测试编译 MySQL | ON | ||
| WITH_UNIXODBC | 启用 unixODBC 支持 | OFF | ||
| WITH_VALGRIND | 是否在 Valgrind 头文件中编译 | OFF | ||
| WITH_ZLIB | zlib 支持的类型 | bundled | ||
| WITH_xxx_STORAGE_ENGINE | 静态编译存储引擎xxx到服务器 | 
- 此选项使用 Oracle 使用的相同构建选项配置源分发,以生成官方 MySQL 版本的二进制分发。 
- 要生成的构建类型: - RelWithDebInfo:启用优化并生成调试信息。这是默认的 MySQL 构建类型。
- Debug:禁用优化并生成调试信息。- WITH_DEBUG如果启用该选项,也会使用此构建类型。也就是说,- -DWITH_DEBUG=1与 具有相同的效果- -DCMAKE_BUILD_TYPE=Debug。
 
- -DCPACK_MONOLITHIC_INSTALL=- bool- 此选项会影响make package操作是生成多个安装包文件还是单个文件。如果禁用,该操作会生成多个安装包文件,如果您只想安装完整 MySQL 安装的一个子集,这可能很有用。如果启用,它会生成一个文件来安装所有内容。 
        该CMAKE_INSTALL_PREFIX选项表示基本安装目录。具有指示组件位置的形式名称的其他选项
        是相对于前缀解释的,它们的值是相对路径名。它们的值不应包含前缀。
INSTALL_xxx
- -DCMAKE_INSTALL_PREFIX=- dir_name- 安装基目录。 - 该值可以在服务器启动时使用 - --basedir选项设置。
- 在哪里安装用户程序。 
- 在哪里安装文档。 
- -DINSTALL_DOCREADMEDIR=- dir_name- 安装 - README文件的位置。
- 在哪里安装头文件。 
- 安装信息文件的位置。 
- 选择预定义的安装布局: - 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_data值- keyring_file_data。请参阅第 5.1.7 节“服务器系统变量”和 第 6.4.4.12 节“密钥环系统变量”中对这些变量的描述 。
- 安装库文件的位置。 
- 在哪里安装手册页。 
- -DINSTALL_MYSQLKEYRINGDIR=- dir_path- 用作 - keyring_file插件数据文件位置的默认目录。默认值是特定于平台的,取决于CMake选项的值;参见 第 5.1.7 节“服务器系统变量”中系统变量的描述。- INSTALL_LAYOUT- keyring_file_data- 这个选项是在 MySQL 5.7.11 中添加的。 
- -DINSTALL_MYSQLSHAREDIR=- dir_name- 安装共享数据文件的位置。 
- -DINSTALL_MYSQLTESTDIR=- dir_name- mysql-test安装目录 在哪里。要禁止安装此目录,请将该选项显式设置为空值 (- -DINSTALL_MYSQLTESTDIR=)。
- -DINSTALL_PKGCONFIGDIR=- dir_name- 安装 供pkg-config - mysqlclient.pc使用的文件 的目录。默认值为 ,除非 以 结尾 ,在这种情况下首先删除。- INSTALL_LIBDIR/pkgconfig- INSTALL_LIBDIR- /mysql
- 插件目录的位置。 - 该值可以在服务器启动时使用 - --plugin_dir选项设置。
- 在哪里安装mysqld服务器。 
- 在哪里安装mysql_install_db。 
- -DINSTALL_SECURE_FILE_PRIVDIR=- dir_name- secure_file_priv系统变量 的默认值 。默认值是特定于平台的,取决于 CMake选项的值;参见 第 5.1.7 节“服务器系统变量”中系统变量的描述。- INSTALL_LAYOUT- secure_file_priv- 要为 - libmysqld嵌入式服务器设置值,请使用- INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR。
- -DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=- dir_name- 嵌入式服务器 - secure_file_priv系统变量 的默认值 。- libmysqld笔记- 嵌入式服务器库从 - libmysqldMySQL 5.7.19 开始被弃用;希望它在 MySQL 8.0 中被删除。
- 在哪里安装 - aclocal/mysql.m4。
- -DINSTALL_SUPPORTFILESDIR=- dir_name- 在哪里安装额外的支持文件。 
- MySQL 数据目录的位置。 - 该值可以在服务器启动时使用 - --datadir选项设置。
- ODBC 的位置包括目录,并且可以在配置连接器/ODBC 时使用。 
- ODBC 库目录的位置,可以在配置连接器/ODBC 时使用。 
- 默认 - my.cnf选项文件目录。- 这个位置不能在服务器启动时设置,但你可以使用选项用给定的选项文件启动服务器 ,其中是文件的完整路径名。 - --defaults-file=- file_name- file_name
- 当 MySQL 由 systemd 管理时,在其中创建 PID 文件的目录的名称。默认是 - /var/run/mysqld; 这可能会根据- INSTALL_LAYOUT值隐式更改。- 除非 - WITH_SYSTEMD启用,否则将忽略此选项。
- 当 MySQL 由 systemd 管理时要使用的 MySQL 服务的名称。默认是 - mysqld; 这可能会根据- INSTALL_LAYOUT值隐式更改。- 除非 - WITH_SYSTEMD启用,否则将忽略此选项。
- 用于 - tmpdir系统变量的默认位置。如果未指定,则该值默认为- P_tmpdirin- <stdio.h>。
        存储引擎构建为插件。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为必须使用INSTALL PLUGIN
        语句或--plugin-load
        选项安装到服务器中才能使用的动态库)。某些插件可能不支持静态或动态构建。
      
        、InnoDB、
         MyISAM、
        MERGE和
        engines 是必需MEMORY的
        CSV(总是编译到服务器中)并且不需要显式安装。
      
        要将存储引擎静态编译到服务器中,请使用
        . 一些允许的值是
        , ,
         , , 和
        (分区支持)。例子:
      -DWITH_engine_STORAGE_ENGINE=1engineARCHIVEBLACKHOLEEXAMPLEFEDERATEDPARTITION
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
        要构建支持 NDB Cluster 的 MySQL,请使用该
        WITH_NDBCLUSTER选项。
          WITH_NDBCLUSTER仅在使用 NDB Cluster 源构建 NDB Cluster 时才受支持。它不能用于在其他 MySQL 源代码树或发行版中启用集群支持。在 NDB Cluster 源分发中,默认情况下启用它。有关更多信息,请参阅
          第 21.3.1.4 节,“在 Linux 上从源构建 NDB Cluster”和
          第 21.3.2.2 节,“在 Windows 上从源编译和安装 NDB Cluster”。
没有 Performance Schema 支持就无法编译。如果希望在没有特定类型的检测的情况下进行编译,可以使用以下 CMake选项来完成:
DISABLE_PSI_COND
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_EXAMPLE_STORAGE_ENGINE=0
-DWITH_FEDERATED_STORAGE_ENGINE=0
-DWITH_PARTITION_STORAGE_ENGINE=0
        也可以使用
        
        (但
        
        首选)从构建中排除存储引擎。例子:
      -DWITHOUT_engine_STORAGE_ENGINE=1-DWITH_engine_STORAGE_ENGINE=0
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
        如果给定存储引擎既未
        
        指定也未
        
        指定,则该引擎将构建为共享模块,或者如果无法构建为共享模块则将其排除。
-DWITH_engine_STORAGE_ENGINE-DWITHOUT_engine_STORAGE_ENGINE
- 关于编译环境的描述性注释。 
- -DDEFAULT_CHARSET=- charset_name- 服务器字符集。默认情况下,MySQL 使用 - latin1(cp1252 West European) 字符集。- 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_- utf8_- utf8mb4- utf16- utf16le- utf32. 允许的字符集在- cmake/character_sets.cmake文件中列为- CHARSETS_AVAILABLE.- 该值可以在服务器启动时使用 - --character_set_server选项设置。
- -DDEFAULT_COLLATION=- collation_name- 服务器整理。默认情况下,MySQL 使用 - latin1_swedish_ci. 使用该- SHOW COLLATION语句确定每个字符集可用的归类。- 该值可以在服务器启动时使用 - --collation_server选项设置。
- 是否排除性能模式条件检测。默认是 - OFF(包括)。
- 是否排除性能模式文件检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 空闲检测。默认是 - OFF(包括)。
- 是否排除性能模式内存检测。默认是 - OFF(包括)。
- 是否排除性能模式元数据检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 互斥检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema rwlock 检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 套接字检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 存储的程序检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 阶段检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 语句检测。默认是 - OFF(包括)。
- -DDISABLE_PSI_STATEMENT_DIGEST=- bool- 是否排除 Performance Schema statement_digest 检测。默认是 - OFF(包括)。
- 是否排除 Performance Schema 表检测。默认是 - OFF(包括)。
- 排除性能模式准备语句实例检测。默认是 - OFF(包括)。
- 排除性能架构线程检测。默认是 - OFF(包括)。- 只在没有任何检测的情况下构建时禁用线程,因为其他检测依赖于线程。 
- -DDISABLE_PSI_TRANSACTION=- bool- 排除性能模式事务检测。默认是 - OFF(包括)。
- 是否下载Boost库。默认值为 - OFF。- 有关使用 Boost 的更多讨论,请参阅 - WITH_BOOST选项。
- -DDOWNLOAD_BOOST_TIMEOUT=- seconds- 下载 Boost 库的超时秒数。默认值为 600 秒。 - 有关使用 Boost 的更多讨论,请参阅 - WITH_BOOST选项。
- 是否下载可选文件。例如,启用此选项后,CMake会下载测试套件用于运行单元测试的 Google Test 发行版。 
- 是否包括对 DTrace 探测的支持。有关 DTrace 的信息,请参阅 第 5.8.4 节,“使用 DTrace 跟踪 mysqld” - 此选项已弃用,因为对 DTrace 的支持在 MySQL 5.7 中已弃用,并在 MySQL 8.0 中被删除。 
- 是否在没有 MySQL Server 的情况下构建。默认为 OFF,即构建服务器。 - 这被认为是一个实验性的选择;最好与服务器一起构建。 
- 是否包含 gcov 支持(仅限 Linux)。 
- 是否启用 - gprof(仅限优化的 Linux 版本)。
- 此选项控制 MySQL 客户端库的内置默认 - LOCAL功能。因此,没有明确安排的客户端- LOCAL根据- ENABLED_LOCAL_INFILEMySQL 构建时指定的设置禁用或启用功能。- 默认情况下,MySQL 二进制发行版中的客户端库是在 - ENABLED_LOCAL_INFILE启用的情况下编译的。如果您从源代码编译 MySQL,请- ENABLED_LOCAL_INFILE根据未做出明确安排的客户端是否应- LOCAL分别禁用或启用功能来将其配置为禁用或启用。- ENABLED_LOCAL_INFILE控制客户端- LOCAL功能的默认值。对于服务器,- local_infile系统变量控制服务器端的- LOCAL能力。要显式地使服务器拒绝或允许- LOAD DATA LOCAL语句(无论客户端程序和库在构建时或运行时如何配置) ,分别以 禁用或启用的 方式启动mysqld 。也可以在运行时设置。请参阅 第 6.1.6 节,“LOAD DATA LOCAL 的安全注意事项”。- local_infile- local_infile
- 是否启用查询分析代码(对于 - SHOW PROFILEand- SHOW PROFILES语句)。
- -DFORCE_UNSUPPORTED_COMPILER=- bool- 默认情况下,CMake检查支持的编译器的最低版本:Visual Studio 2013 (Windows);GCC 4.4 或 Clang 3.3 (Linux);Developer Studio 12.5(Solaris 服务器);Developer Studio 12.2 或 GCC 4.4(Solaris 客户端库);Clang 3.3 (macOS)、Clang 3.3 (FreeBSD)。要禁用此检查,请使用 - -DFORCE_UNSUPPORTED_COMPILER=ON.
- 如果 - -DBUILD_CONFIG=mysql_release在 Linux 上给出了该选项,则- libaio默认情况下必须链接库。如果您没有- libaio或不想安装它,您可以通过指定- -DIGNORE_AIO_CHECK=1.
- 每个表的最大索引数。默认值为 64。最大值为 255。小于 64 的值将被忽略,并使用默认值 64。 
- 是否启用 MySQL 维护者特定的开发环境。如果启用,此选项会导致编译器警告变为错误。 
- 所使用的互斥量类型 - InnoDB。选项包括:- event: 使用事件互斥锁。这是默认值和原始- InnoDB互斥量实现。
- sys: 在 UNIX 系统上使用 POSIX 互斥体。如果可用,请在 Windows 上使用- CRITICAL_SECTIONonjects。
- futex: 使用 Linux futexes 而不是条件变量来调度等待线程。
 
- X 插件侦听 TCP/IP 连接的端口号。默认值为 33060。 - 该值可以在服务器启动时使用 - mysqlx_port系统变量设置。
- 服务器侦听 X 插件套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为 - /tmp/mysqlx.sock。- 该值可以在服务器启动时使用 - mysqlx_port系统变量设置。
- 对于 Windows 或 macOS,要合并到项目文件名中的项目名称。 
- 服务器侦听 TCP/IP 连接的端口号。默认值为 3306。 - 该值可以在服务器启动时使用 - --port选项设置。
- 服务器侦听套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为 - /tmp/mysql.sock。- 该值可以在服务器启动时使用 - --socket选项设置。
- 是否支持优化器跟踪。请参阅 MySQL 内部结构:跟踪优化器。 
- 对于 Linux 系统上的构建,此选项控制是否要格外小心地创建独立于构建位置和时间的构建结果。 - 这个选项是在 MySQL 5.7.19 中添加的。 
- 是否在 Windows 上禁用函数内联。默认为关闭(启用内联)。 
- 是否为支持它的编译器启用 AddressSanitizer。默认关闭。 
- 是否为 use-after-scope 检测启用 AddressSanitizer - -fsanitize-address-use-after-scopeClang 标志。默认关闭。要使用此选项,- -DWITH_ASAN还必须启用。
- -DWITH_AUTHENTICATION_LDAP=- bool- LDAP认证插件无法构建时是否报错: - 如果禁用此选项(默认设置),则在找到所需的头文件和库时构建 LDAP 插件。如果不是, CMake会显示一条关于它的注释。 
- 如果启用此选项,则找不到所需的头文件和库会导致 CMake产生错误,从而阻止构建服务器。 
 - 有关 LDAP 身份验证的信息,请参阅 第 6.4.1.9 节,“LDAP 可插入身份验证”。这个选项是在 MySQL 5.7.19 中添加的。 
- -DWITH_AUTHENTICATION_PAM=- bool- 是否为包含此插件的源树构建 PAM 身份验证插件。(请参阅 第 6.4.1.7 节,“PAM 可插入身份验证”。)如果指定了此选项并且无法编译插件,则构建失败。 
- Amazon Web Services 软件开发工具包的位置。 - 这个选项是在 MySQL 5.7.19 中添加的。 
- 构建 MySQL 需要 Boost 库。这些 CMake选项可以控制库源位置,以及是否自动下载: - -DWITH_BOOST=指定 Boost 库目录位置。也可以通过设置- path_name- BOOST_ROOT或- WITH_BOOST环境变量来指定 Boost 位置。- 从 MySQL 5.7.11 开始, - -DWITH_BOOST=system允许并指示正确版本的 Boost 安装在标准位置的编译主机上。在这种情况下,使用已安装的 Boost 版本,而不是 MySQL 源代码分发中包含的任何版本。
- -DDOWNLOAD_BOOST=指定如果 Boost 源不在指定位置,是否下载它。默认值为- bool- OFF。
- -DDOWNLOAD_BOOST_TIMEOUT=下载 Boost 库的超时秒数。默认值为 600 秒。- seconds
 - 例如,如果您通常构建 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- 是否将客户端协议跟踪框架构建到客户端库中。默认情况下,此选项已启用。 - 有关编写协议跟踪客户端插件的信息,请参阅编写协议跟踪插件。 - 另请参阅 - WITH_TEST_TRACE_PLUGIN选项。
- curl库 的位置。 - curl_type可以是- system(使用系统 curl库)或 curl 库的路径 名。- 这个选项是在 MySQL 5.7.19 中添加的。 
- 是否包括调试支持。 - 使用调试支持配置 MySQL 使您能够 - --debug="d,parser_debug"在启动服务器时使用该选项。这会导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出会写入错误日志。- 存储引擎的同步调试检查在 - InnoDB下面定义,- UNIV_DEBUG并且在使用该- WITH_DEBUG选项编译调试支持时可用。编译调试支持时,- innodb_sync_debug配置选项可用于启用或禁用- InnoDB同步调试检查。- 从 MySQL 5.7.18 开始,启用 - WITH_DEBUG还启用调试同步。有关调试同步工具的描述以及如何使用同步点,请参阅 MySQL 内部结构:测试同步。
- -DWITH_DEFAULT_FEATURE_SET=- bool- 是否使用来自 - cmake/build_configurations/feature_set.cmake.
- 使用哪个 - libedit/- editline库。允许的值为- bundled(默认值)和- system.- WITH_EDITLINE替换- WITH_LIBEDIT,已被删除。
- 是否构建 - libmysqld嵌入式服务器库。笔记- 嵌入式服务器库从 - libmysqldMySQL 5.7.17 开始弃用,并已在 MySQL 8.0 中删除。
- -DWITH_EMBEDDED_SHARED_LIBRARY=- bool- 是否构建一个共享的 - libmysqld嵌入式服务器库。笔记- 嵌入式服务器库从 - libmysqldMySQL 5.7.17 开始弃用,并已在 MySQL 8.0 中删除。
- 要包括哪些额外的字符集: - all: 所有字符集。这是默认值。
- complex: 复杂的字符集。
- none: 没有额外的字符集。
 
- googlemock 发行版的路径,用于基于 Google 测试的单元测试。选项值是分发 Zip 文件的路径。或者,将 - WITH_GMOCK环境变量设置为路径名。也可以使用- -DENABLE_DOWNLOADS=1,在这种情况下, CMake从 GitHub 下载分发版。- 如果您在没有基于 Google Test 的单元测试(通过配置 wihout - WITH_GMOCK)的情况下构建 MySQL, CMake会显示一条消息,指示如何下载它。
- -DWITH_INNODB_EXTRA_DEBUG=- bool- 是否包含额外的 InnoDB 调试支持。 - 启用 - WITH_INNODB_EXTRA_DEBUG会打开额外的 InnoDB 调试检查。此选项只能在启用时- WITH_DEBUG启用。
- 是否生成 memcached 共享库( - libmemcached.so和- innodb_engine.so)。
- keyring_file是否构建插件 附带的测试程序 。默认值为- OFF。测试文件源代码位于- plugin/keyring/keyring-test目录中。- 这个选项是在 MySQL 5.7.11 中添加的。 
- 限内部使用。这个选项是在 MySQL 5.7.29 中添加的。 
- 使用哪个 - libevent库。允许的值为- bundled(default) 和- system. 在 MySQL 5.7.31 之前,如果指定- system,则使用系统- libevent库(如果存在),否则会出错。MySQL 5.7.31及以后版本,如果- system指定了,找不到系统- libevent库,不管怎样都会报错,- libevent不使用bundled。- memcached 和 X 插件 需要 该 - libevent库 。- InnoDB
- 是否包含 - libwrap(TCP 包装器)支持。
- 该 - WITH_LZ4选项表示- zlib支持的来源:- bundled:使用- LZ4与发行版捆绑在一起的库。这是默认值。
- system: 使用系统- LZ4库。如果- WITH_LZ4设置为此值,则不会构建lz4_decompress实用程序。在这种情况下, 可以改用 系统lz4命令。
 
- -DWITH_MECAB={disabled|system|- path_name}- 使用此选项编译 MeCab 解析器。如果您已将 MeCab 安装到其默认安装目录,请将 - -DWITH_MECAB=system. 该- system选项适用于使用本机包管理实用程序从源代码或二进制文件执行的 MeCab 安装。如果将 MeCab 安装到自定义安装目录,请指定 MeCab 安装路径。例如,- -DWITH_MECAB=/opt/mecab。如果该- system选项不起作用,则指定 MeCab 安装路径应该在所有情况下都有效。- 有关相关信息,请参阅 第 12.10.9 节,“MeCab 全文解析器插件”。 
- 是否为支持它的编译器启用 MemorySanitizer。默认关闭。 - 要使此选项在启用时生效,所有链接到 MySQL 的库也必须在启用该选项的情况下进行编译。 
- 是否启用 Visual Studio CRT 内存泄漏跟踪。默认值为 - OFF。
- 显式设置 NUMA 内存分配策略。 CMake - WITH_NUMA根据当前平台是否- NUMA支持设置默认 值。对于不支持 NUMA 的平台, CMake的行为如下:- 没有 NUMA 选项(正常情况), CMake正常继续,只产生这个警告:NUMA library missing or required version not available 
- 使用 - -DWITH_NUMA=ON, CMake中止并出现此错误:NUMA 库丢失或所需版本不可用
 - 这个选项是在 MySQL 5.7.17 中添加的。 
- 使用哪个 Protocol Buffers 包。 - protobuf_type可以是以下值之一:- bundled:使用与发行版捆绑在一起的包。这是默认值。
- system:使用系统上安装的包。
 - 其他值将被忽略,回退到 - bundled.- 这个选项是在 MySQL 5.7.12 中添加的。 
- 是否构建快速开发周期插件。启用后,将 - rapid在包含这些插件的构建树中创建一个目录。禁用时,不会- rapid在构建树中创建目录。默认为- ON,除非该- rapid目录已从源代码树中删除,在这种情况下默认变为- OFF. 这个选项是在 MySQL 5.7.12 中添加的。
- 限内部使用。这个选项是在 MySQL 5.7.29 中添加的。 
- -DWITH_SSL={|- ssl_type- path_name}- 为了支持加密连接、随机数生成的熵和其他与加密相关的操作,MySQL 必须使用 SSL 库构建。此选项指定要使用的 SSL 库。 - ssl_type可以是以下值之一:- yes:如果存在,则使用系统 OpenSSL 库,否则使用与发行版捆绑在一起的库。
- bundled:使用与发行版捆绑在一起的 SSL 库。这是 MySQL 5.7.28 之前的默认设置。从 5.7.28 开始,这不再是允许的值,默认值为- system.
- system: 使用系统 OpenSSL 库。这是 MySQL 5.7.28 的默认设置。
 
- path_name是要使用的 OpenSSL 安装的路径名。这可能比使用- ssl_type值更可取,- system因为它可以防止 CMake 检测和使用系统上安装的较旧或不正确的 OpenSSL 版本。(另一种允许做同样事情的方法是设置- WITH_SSL为- system并将- CMAKE_PREFIX_PATH选项设置为- path_name。)
 - 有关配置 SSL 库的其他信息,请参阅 第 2.9.6 节,“配置 SSL 库支持”。 
- 是否启用系统支持文件的安装。默认情况下,此选项被禁用。启用后,会安装 systemd 支持文件, 但不会安装mysqld_safe和 System V 初始化脚本等脚本。在 systemd 不可用的平台上,启用 - WITH_SYSTEMD会导致CMake出错。- 有关使用 systemd 的更多信息,请参阅 第 2.5.10 节,“使用 systemd 管理 MySQL 服务器”。该部分还包括有关指定先前在 - [mysqld_safe]选项组中指定的选项的信息。因为 在使用 systemd 时没有安装mysqld_safe,所以必须以其他方式指定此类选项。
- 是否构建测试协议跟踪客户端插件(请参阅 使用测试协议跟踪插件)。默认情况下,此选项被禁用。除非启用该选项,否则启用该选项无效 - WITH_CLIENT_PROTOCOL_TRACING。如果 MySQL 配置为启用两个选项,则- libmysqlclient客户端库将使用内置的测试协议跟踪插件构建,并且所有标准 MySQL 客户端都会加载该插件。但是,即使启用了测试插件,默认情况下也没有效果。使用环境变量提供对插件的控制;请参阅 使用测试协议跟踪插件。笔记- 如果您想使用自己的协议跟踪插件,请 不要启用该 - WITH_TEST_TRACE_PLUGIN选项,因为一次只能加载一个这样的插件,并且尝试加载第二个插件时会发生错误。如果您已经在启用测试协议跟踪插件的情况下构建了 MySQL 以查看其工作原理,则必须在没有它的情况下重建 MySQL,然后才能使用您自己的插件。- 有关编写跟踪插件的信息,请参阅 编写协议跟踪插件。 
- 是否为支持它的编译器启用 Undefined Behavior Sanitizer。默认关闭。 
- 如果启用,使用单元测试编译 MySQL。除非未编译服务器,否则默认值为 ON。 
- 为连接器/ODBC 启用 unixODBC 支持。 
- 是否在 Valgrind 头文件中编译,这将 Valgrind API 暴露给 MySQL 代码。默认值为 - OFF。- 要生成 Valgrind 感知调试版本, - -DWITH_VALGRIND=1通常与- -DWITH_DEBUG=1. 请参阅 构建调试配置。
- 某些功能要求服务器构建有压缩库支持,例如 - COMPRESS()和- UNCOMPRESS()函数,以及客户端/服务器协议的压缩。该- WITH_ZLIB选项表示- zlib支持的来源:- bundled:使用- zlib与发行版捆绑在一起的库。这是默认值。
- system: 使用系统- zlib库。
 
- C 编译器的标志。 
- C++ 编译器的标志。 
- -DWITH_DEFAULT_COMPILER_OPTIONS=- bool- 是否使用来自 - cmake/build_configurations/compiler_options.cmake.笔记- 所有优化标志均由 MySQL 构建团队精心选择和测试。覆盖它们可能会导致意外结果,风险由您自行承担。 
- -DSUNPRO_CXX_LIBRARY="“- lib_name- 在 Solaris 10 或更高版本上 启用链接 - libCstd而不是 。- stlport4这仅适用于客户端代码,因为服务器依赖于 C++98。
        要指定您自己的 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 Cluster 源构建 NDB Cluster 时使用;使用 MySQL 5.6 服务器树中的源时,当前不支持它们。
- NDBNDB 7.5.21 和 NDB 7.6.17 中删除了对 memcached 的支持,因此不再支持- NDB在这些或更高版本中构建此选项。
- -DWITH_BUNDLED_LIBEVENT={ON|OFF}- NDBNDB 7.5.21 和 NDB 7.6.17 中删除了对 memcached 的支持,因此不再支持- NDB在这些或更高版本中构建此选项。
- -DWITH_BUNDLED_MEMCACHED={ON|OFF}- NDBNDB 7.5.21 和 NDB 7.6.17 中删除了对 memcached 的支持,因此不再支持- NDB在这些或更高版本中构建此选项。
- 设置用于构建 NDB Cluster Connector for Java 的类路径。默认为空。如果使用此选项,则忽略该选项 - -DWITH_NDB_JAVA=OFF。
- 在 - NDB内核中启用错误注入。仅供测试;不适用于构建生产二进制文件。默认值为- OFF。
- -DWITH_NDBAPI_EXAMPLES={ON|OFF}- 在 - storage/ndb/ndbapi-examples/.
- -DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}- 仅限内部使用; 可能并不总是按预期工作。 - NDB要在支持下 构建,请- WITH_NDBCLUSTER改用。
- 构建多线程数据节点可执行文件 ndbmtd。默认值为 - ON。
- 在使用此选项构建的mysqld 中默认启用二进制日志记录 。默认开启。 
- 启用构建 NDB Cluster 二进制文件的调试版本。默认关闭。 
- 使用 Java 支持构建 NDB Cluster,包括 - ClusterJ.- 默认情况下此选项为 ON。如果您不希望使用 Java 支持编译 NDB Cluster,则必须通过 - -DWITH_NDB_JAVA=OFF在运行 CMake时指定来显式禁用它。否则,如果找不到 Java,构建配置将失败。
- 导致构建的 NDB Cluster 管理服务器(ndb_mgmd)默认使用它 - port。如果未设置此选项,生成的管理服务器默认会尝试使用端口 1186。
- 如果启用,包括一组 NDB API 测试程序。默认为关闭。