Documentation Home

2.9.7 MySQL 源配置选项

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 选项参考

下表显示了可用的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到服务器

常规选项

  • -DBUILD_CONFIG=mysql_release

    此选项使用 Oracle 使用的相同构建选项配置源分发,以生成官方 MySQL 版本的二进制分发。

  • -DCMAKE_BUILD_TYPE=type

    要生成的构建类型:

    • RelWithDebInfo:启用优化并生成调试信息。这是默认的 MySQL 构建类型。

    • Debug:禁用优化并生成调试信息。WITH_DEBUG 如果启用该选项,也会使用此构建类型。也就是说, -DWITH_DEBUG=1与 具有相同的效果 -DCMAKE_BUILD_TYPE=Debug

  • -DCPACK_MONOLITHIC_INSTALL=bool

    此选项会影响make package操作是生成多个安装包文件还是单个文件。如果禁用,该操作会生成多个安装包文件,如果您只想安装完整 MySQL 安装的一个子集,这可能很有用。如果启用,它会生成一个文件来安装所有内容。

安装布局选项

CMAKE_INSTALL_PREFIX选项表示基本安装目录。具有指示组件位置的形式名称的其他选项 是相对于前缀解释的,它们的值是相对路径名。它们的值不应包含前缀。 INSTALL_xxx

存储引擎选项

存储引擎构建为插件。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为必须使用INSTALL PLUGIN 语句或--plugin-load 选项安装到服务器中才能使用的动态库)。某些插件可能不支持静态或动态构建。

InnoDBMyISAMMERGE和 engines 是必需MEMORYCSV(总是编译到服务器中)并且不需要显式安装。

要将存储引擎静态编译到服务器中,请使用 . 一些允许的值是 , , , , 和 (分区支持)。例子: -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

功能选项

  • -DCOMPILATION_COMMENT=string

    关于编译环境的描述性注释。

  • -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_ utf8mb4utf16utf16leutf32. 允许的字符集在 cmake/character_sets.cmake文件中列为CHARSETS_AVAILABLE.

    该值可以在服务器启动时使用 --character_set_server 选项设置。

  • -DDEFAULT_COLLATION=collation_name

    服务器整理。默认情况下,MySQL 使用 latin1_swedish_ci. 使用该 SHOW COLLATION语句确定每个字符集可用的归类。

    该值可以在服务器启动时使用 --collation_server选项设置。

  • -DDISABLE_PSI_COND=bool

    是否排除性能模式条件检测。默认是OFF (包括)。

  • -DDISABLE_PSI_FILE=bool

    是否排除性能模式文件检测。默认是OFF (包括)。

  • -DDISABLE_PSI_IDLE=bool

    是否排除 Performance Schema 空闲检测。默认是OFF (包括)。

  • -DDISABLE_PSI_MEMORY=bool

    是否排除性能模式内存检测。默认是OFF (包括)。

  • -DDISABLE_PSI_METADATA=bool

    是否排除性能模式元数据检测。默认是OFF (包括)。

  • -DDISABLE_PSI_MUTEX=bool

    是否排除 Performance Schema 互斥检测。默认是OFF (包括)。

  • -DDISABLE_PSI_RWLOCK=bool

    是否排除 Performance Schema rwlock 检测。默认是OFF (包括)。

  • -DDISABLE_PSI_SOCKET=bool

    是否排除 Performance Schema 套接字检测。默认是OFF (包括)。

  • -DDISABLE_PSI_SP=bool

    是否排除 Performance Schema 存储的程序检测。默认是OFF (包括)。

  • -DDISABLE_PSI_STAGE=bool

    是否排除 Performance Schema 阶段检测。默认是OFF (包括)。

  • -DDISABLE_PSI_STATEMENT=bool

    是否排除 Performance Schema 语句检测。默认是OFF (包括)。

  • -DDISABLE_PSI_STATEMENT_DIGEST=bool

    是否排除 Performance Schema statement_digest 检测。默认是OFF (包括)。

  • -DDISABLE_PSI_TABLE=bool

    是否排除 Performance Schema 表检测。默认是OFF (包括)。

  • -DDISABLE_PSI_PS=bool

    排除性能模式准备语句实例检测。默认是OFF (包括)。

  • -DDISABLE_PSI_THREAD=bool

    排除性能架构线程检测。默认是OFF(包括)。

    只在没有任何检测的情况下构建时禁用线程,因为其他检测依赖于线程。

  • -DDISABLE_PSI_TRANSACTION=bool

    排除性能模式事务检测。默认是OFF(包括)。

  • -DDOWNLOAD_BOOST=bool

    是否下载Boost库。默认值为 OFF

    有关使用 Boost 的更多讨论,请参阅WITH_BOOST选项。

  • -DDOWNLOAD_BOOST_TIMEOUT=seconds

    下载 Boost 库的超时秒数。默认值为 600 秒。

    有关使用 Boost 的更多讨论,请参阅WITH_BOOST选项。

  • -DENABLE_DOWNLOADS=bool

    是否下载可选文件。例如,启用此选项后,CMake会下载测试套件用于运行单元测试的 Google Test 发行版。

  • -DENABLE_DTRACE=bool

    是否包括对 DTrace 探测的支持。有关 DTrace 的信息,请参阅 第 5.8.4 节,“使用 DTrace 跟踪 mysqld”

    此选项已弃用,因为对 DTrace 的支持在 MySQL 5.7 中已弃用,并在 MySQL 8.0 中被删除。

  • -DWITHOUT_SERVER=bool

    是否在没有 MySQL Server 的情况下构建。默认为 OFF,即构建服务器。

    这被认为是一个实验性的选择;最好与服务器一起构建。

  • -DENABLE_GCOV=bool

    是否包含 gcov 支持(仅限 Linux)。

  • -DENABLE_GPROF=bool

    是否启用gprof(仅限优化的 Linux 版本)。

  • -DENABLED_LOCAL_INFILE=bool

    此选项控制 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_infilelocal_infile

  • -DENABLED_PROFILING=bool

    是否启用查询分析代码(对于 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.

  • -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 互斥体。如果可用,请在 Windows 上使用CRITICAL_SECTIONonjects。

    • 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 5.7.19 中添加的。

  • -DWIN_DEBUG_NO_INLINE=bool

    是否在 Windows 上禁用函数内联。默认为关闭(启用内联)。

  • -DWITH_ASAN=bool

    是否为支持它的编译器启用 AddressSanitizer。默认关闭。

  • -DWITH_ASAN_SCOPE=bool

    是否为 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 可插入身份验证”。)如果指定了此选项并且无法编译插件,则构建失败。

  • -DWITH_AWS_SDK=path_name

    Amazon Web Services 软件开发工具包的位置。

    这个选项是在 MySQL 5.7.19 中添加的。

  • -DWITH_BOOST=path_name

    构建 MySQL 需要 Boost 库。这些 CMake选项可以控制库源位置,以及是否自动下载:

    • -DWITH_BOOST=path_name 指定 Boost 库目录位置。也可以通过设置BOOST_ROOTWITH_BOOST环境变量来指定 Boost 位置。

      从 MySQL 5.7.11 开始, -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

    是否将客户端协议跟踪框架构建到客户端库中。默认情况下,此选项已启用。

    有关编写协议跟踪客户端插件的信息,请参阅编写协议跟踪插件

    另请参阅 WITH_TEST_TRACE_PLUGIN选项。

  • -DWITH_CURL=curl_type

    curl库 的位置。curl_type可以是 system(使用系统 curl库)或 curl 库的路径

    这个选项是在 MySQL 5.7.19 中添加的。

  • -DWITH_DEBUG=bool

    是否包括调试支持。

    使用调试支持配置 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.

  • -DWITH_EDITLINE=value

    使用哪个libedit/editline 库。允许的值为 bundled(默认值)和 system.

    WITH_EDITLINE替换 WITH_LIBEDIT,已被删除。

  • -DWITH_EMBEDDED_SERVER=bool

    是否构建libmysqld嵌入式服务器库。

    笔记

    嵌入式服务器库从libmysqldMySQL 5.7.17 开始弃用,并已在 MySQL 8.0 中删除。

  • -DWITH_EMBEDDED_SHARED_LIBRARY=bool

    是否构建一个共享的libmysqld 嵌入式服务器库。

    笔记

    嵌入式服务器库从libmysqldMySQL 5.7.17 开始弃用,并已在 MySQL 8.0 中删除。

  • -DWITH_EXTRA_CHARSETS=name

    要包括哪些额外的字符集:

    • all: 所有字符集。这是默认值。

    • complex: 复杂的字符集。

    • none: 没有额外的字符集。

  • -DWITH_GMOCK=path_name

    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启用。

  • -DWITH_INNODB_MEMCACHED=bool

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

  • -DWITH_KEYRING_TEST=bool

    keyring_file是否构建插件 附带的测试程序 。默认值为 OFF。测试文件源代码位于plugin/keyring/keyring-test 目录中。

    这个选项是在 MySQL 5.7.11 中添加的。

  • -DWITH_LDAP=value

    限内部使用。这个选项是在 MySQL 5.7.29 中添加的。

  • -DWITH_LIBEVENT=string

    使用哪个libevent库。允许的值为bundled(default) 和 system. 在 MySQL 5.7.31 之前,如果指定system,则使用系统 libevent库(如果存在),否则会出错。MySQL 5.7.31及以后版本,如果 system指定了,找不到系统 libevent库,不管怎样都会报错, libevent不使用bundled。

    memcached 和 X 插件 需要 该libevent库 。InnoDB

  • -DWITH_LIBWRAP=bool

    是否包含libwrap(TCP 包装器)支持。

  • -DWITH_LZ4=lz4_type

    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 全文解析器插件”

  • -DWITH_MSAN=bool

    是否为支持它的编译器启用 MemorySanitizer。默认关闭。

    要使此选项在启用时生效,所有链接到 MySQL 的库也必须在启用该选项的情况下进行编译。

  • -DWITH_MSCRT_DEBUG=bool

    是否启用 Visual Studio CRT 内存泄漏跟踪。默认值为OFF

  • -DWITH_NUMA=bool

    显式设置 NUMA 内存分配策略。 CMakeWITH_NUMA根据当前平台是否NUMA 支持设置默认 值。对于不支持 NUMA 的平台, CMake的行为如下:

    • 没有 NUMA 选项(正常情况), CMake正常继续,只产生这个警告:NUMA library missing or required version not available

    • 使用-DWITH_NUMA=ONCMake中止并出现此错误:NUMA 库丢失或所需版本不可用

    这个选项是在 MySQL 5.7.17 中添加的。

  • -DWITH_PROTOBUF=protobuf_type

    使用哪个 Protocol Buffers 包。 protobuf_type可以是以下值之一:

    • bundled:使用与发行版捆绑在一起的包。这是默认值。

    • system:使用系统上安装的包。

    其他值将被忽略,回退到 bundled.

    这个选项是在 MySQL 5.7.12 中添加的。

  • -DWITH_RAPID=bool

    是否构建快速开发周期插件。启用后,将rapid在包含这些插件的构建树中创建一个目录。禁用时,不会rapid在构建树中创建目录。默认为ON,除非该 rapid目录已从源代码树中删除,在这种情况下默认变为 OFF. 这个选项是在 MySQL 5.7.12 中添加的。

  • -DWITH_SASL=value

    限内部使用。这个选项是在 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_SSLsystem 并将CMAKE_PREFIX_PATH选项设置为 path_name。)

    有关配置 SSL 库的其他信息,请参阅 第 2.9.6 节,“配置 SSL 库支持”

  • -DWITH_SYSTEMD=bool

    是否启用系统支持文件的安装。默认情况下,此选项被禁用。启用后,会安装 systemd 支持文件, 但不会安装mysqld_safe和 System V 初始化脚本等脚本。在 systemd 不可用的平台上,启用 WITH_SYSTEMD会导致CMake出错。

    有关使用 systemd 的更多信息,请参阅 第 2.5.10 节,“使用 systemd 管理 MySQL 服务器”。该部分还包括有关指定先前在 [mysqld_safe]选项组中指定的选项的信息。因为 在使用 systemd 时没有安装mysqld_safe,所以必须以其他方式指定此类选项。

  • -DWITH_TEST_TRACE_PLUGIN=bool

    是否构建测试协议跟踪客户端插件(请参阅 使用测试协议跟踪插件)。默认情况下,此选项被禁用。除非启用该选项,否则启用该选项无效 WITH_CLIENT_PROTOCOL_TRACING 。如果 MySQL 配置为启用两个选项,则libmysqlclient客户端库将使用内置的测试协议跟踪插件构建,并且所有标准 MySQL 客户端都会加载该插件。但是,即使启用了测试插件,默认情况下也没有效果。使用环境变量提供对插件的控制;请参阅 使用测试协议跟踪插件

    笔记

    如果您想使用自己的协议跟踪插件,请 不要启用该 WITH_TEST_TRACE_PLUGIN 选项,因为一次只能加载一个这样的插件,并且尝试加载第二个插件时会发生错误。如果您已经在启用测试协议跟踪插件的情况下构建了 MySQL 以查看其工作原理,则必须在没有它的情况下重建 MySQL,然后才能使用您自己的插件。

    有关编写跟踪插件的信息,请参阅 编写协议跟踪插件

  • -DWITH_UBSAN=bool

    是否为支持它的编译器启用 Undefined Behavior Sanitizer。默认关闭。

  • -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库。

编译器标志

要指定您自己的 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 Cluster 的 CMake 选项

以下选项用于使用 NDB Cluster 源构建 NDB Cluster 时使用;使用 MySQL 5.6 服务器树中的源时,当前不支持它们。