首页 数据库 mysql

MySQL系列-CMake参数说明(v5.7)

一、前言

MySQL从5.5版本开始,源代码编译安装将原来的configure改为cmake,因此在安装MySQL 5.5.x时,需要先安装cmake,可以通过源码安装,也可以通过yum 或 apt-get软件包安装。

MySQL官网手册有介绍CMake工具如何安装以及如何用CMake进行新版MySQL的编译安装。Building MySQL Server with CMake:
https://dev.mysql.com/doc/internals/en/cmake.html。其中第4.6节“Autotools to CMake Transition Guide”: (
https://dev.mysql.com/doc/internals/en/autotools-to-cmake.html)如果您以前使用GNU Autotools构建了MySQL,则本指南将说明如何将常见的Autotools选项映射到CMake。

cmake官网:https://cmake.org/



二、说明

本文参照官网文档资料概述MySQL5.7版本cmake选项。

5.7版本:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

5.6版本:
https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html

8.0版本:
https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html



三、CMake选项参考

CMake程序对如何配置MySQL源分发提供了很多控制。通常,可以使用CMake命令行上的选项来执行此操作。还可以使用某些环境变量来影响CMake。对于 bool 选项,可以将值指定为1或ON以启用该选项,或者将其指定为0或OFF以禁用该选项。许多选项配置了编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,可以在服务器启动时使用--basedir,-port和--socket更改配置默认安装基本目录位置,TCP / IP端口号和Unix套接字文件的CMAKE_INSTALL_PREFIX,MYSQL_TCP_PORT和MYSQL_UNIX_ADDR选项。 mysqld的选项。在适用的情况下,配置选项描述指示相应的mysqld启动选项。


1.常规选项

  • -DBUILD_CONFIG=mysql_release

此选项使用与Oracle相同的构建选项来配置源分发,Oracle使用这些生成选项来为MySQL官方发行版生成二进制分发。

  • -DCMAKE_BUILD_TYPE=type

要生成的构建类型:

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

此选项影响make软件包操作是生成多个安装软件包文件还是单个文件。如果禁用,该操作将产生多个安装包文件,如果您只想安装完整MySQL安装的一部分,则可能很有用。如果启用,它将生成一个用于安装所有内容的文件。


2.安装布局选项

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_data和keyring_file_data系统变量的默认值。

  • -DINSTALL_LIBDIR=dir_name

安装库文件的位置。

  • -DINSTALL_MANDIR=dir_name

安装手册页的位置。

  • -DINSTALL_MYSQLKEYRINGDIR=dir_path

用作keyring_file插件数据文件位置的默认目录。 默认值是特定于平台的,并取决于INSTALL_LAYOUT CMake选项的值。这个选项是在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以/ mysql结尾,否则默认值是INSTALL_LIBDIR / pkgconfig,在这种情况下,将首先删除它。

  • -DINSTALL_PLUGINDIR=dir_name

插件目录的位置。可以在服务器启动时使用--plugin_dir选项设置此值。

  • -DINSTALL_SBINDIR=dir_name

安装mysqld服务器的位置。

  • -DINSTALL_SCRIPTDIR=dir_name

安装mysql_install_db的位置。

  • -DINSTALL_SECURE_FILE_PRIVDIR=dir_name

secure_file_priv系统变量的默认值。 默认值是特定于平台的,并取决于INSTALL_LAYOUT CMake选项的值。要设置libmysqld嵌入式服务器的值,请使用
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR。

  • -DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=dir_name

嵌入式服务器的secure_file_priv系统变量,默认值为 libmysqld从MySQL 5.7.19开始不推荐使用libmysqld嵌入式服务器库; 希望在MySQL 8.0中将其删除。

  • -DINSTALL_SHAREDIR=dir_name

安装aclocal/mysql.m4的位置。

  • -DINSTALL_SUPPORTFILESDIR=dir_name

在哪里安装其他支持文件。

  • -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_name选项使用给定的选项文件启动服务器,其中file_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系统变量的默认位置。 如果未指定,则该值默认为<stdio.h>中的P_tmpdir。


3.存储引擎选项

存储引擎是作为插件构建的。 您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用INSTALL PLUGIN语句或--plugin-load选项安装到服务器中,然后才能使用它 )。 某些插件可能不支持静态或动态构建。InnoDB,MyISAM,MERGE,MEMORY和CSV引擎是强制性的(始终编译到服务器中),无需明确安装。

要将存储引擎静态编译到服务器中,请使用
-DWITH_engine_STORAGE_ENGINE = 1。 一些允许的引擎值是ARCHIVE,BLACKHOLE,EXAMPLE,FEDERATED,NDB或NDBCLUSTER(NDB)和PARTITION(分区支持)。如:

-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

仅当使用NDB群集源构建NDB群集时,才支持
WITH_NDBCLUSTER_STORAGE_ENGINE。 它不能用于在其他MySQL源树或发行版中启用集群支持。 在NDB群集源分发中,默认情况下启用它。

如果没有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,则该引擎将构建为共享模块,如果无法构建为共享模块,则将其排除。


4.功能选项

  • -DCOMPILATION_COMMENT=string

关于编译环境的描述性评论。

  • -DDEFAULT_CHARSET=charset_name

服务器字符集。默认情况下,MySQL使用 latin1(cp1252西欧)字符集。charset_name可能是以下之一:binaryarmscii8asciibig5cp1250cp1251cp1256cp1257cp850cp852cp866cp932dec8eucjpmseuckrgb2312gbkgeostd8greekhebrewhp8keybcs2koi8rkoi8ulatin1latin2latin5latin7maccemacromansjisswe7tis620ucs2ujisutf8utf8mb4utf16utf16leutf32。允许的字符集在
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

是否排除性能模式空闲检测。默认值为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

是否排除Performance Schema statement_digest工具。默认值为OFF (包括)。

  • -DDISABLE_PSI_TABLE=bool

是否排除性能模式表工具。默认值为OFF (包括)。

  • -DDISABLE_PSI_PS=bool

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

  • -DDISABLE_PSI_THREAD=bool

排除性能架构线程检测。默认值为OFF(包括)。仅在构建时不使用任何工具时才禁用线程,因为其他工具对线程有依赖性。

  • -DDISABLE_PSI_TRANSACTION=bool

排除性能架构事务检测。默认值为OFF(包括)。

  • -DDOWNLOAD_BOOST=bool

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

  • -DDOWNLOAD_BOOST_TIMEOUT=seconds

下载Boost库的超时时间(以秒为单位)。默认值为600秒。

  • -DENABLE_DOWNLOADS=bool

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

  • -DENABLE_DTRACE=bool

是否包括对DTrace探针的支持。不建议使用此选项,因为在MySQL 5.7中已弃用了对DTrace的支持,而在MySQL 8.0中已删除了对DTrace的支持。

  • -DENABLE_GCOV=bool

是否包括gcov支持(仅Linux)。

  • -DENABLE_GPROF=bool

是否启用gprof(仅优化的Linux构建)。

  • -DENABLED_LOCAL_INFILE=bool

此选项控制MySQL客户端库的内置默认LOCAL功能。因此,没有明确安排的客户端将根据MySQL构建时指定的ENABLED_LOCAL_INFILE设置禁用或启用LOCAL功能。

默认情况下,MySQL二进制发行版中的客户端库是在启用ENABLED_LOCAL_INFILE的情况下编译的。如果您从源代码编译MySQL,请根据未进行显式安排的客户端应分别禁用还是启用LOCAL功能,将其配置为ENABLED_LOCAL_INFILE禁用或启用。

ENABLED_LOCAL_INFILE控制客户端LOCAL功能的默认设置。对于服务器,local_infile系统变量控制服务器端的LOCAL功能。要显式地使服务器拒绝或允许LOAD DATA LOCAL语句(无论在构建时或运行时如何配置客户端程序和库),请分别在禁用或启用local_infile的情况下启动mysqld。也可以在运行时设置local_infile。

  • -DENABLED_PROFILING=bool

是否启用查询分析代码(针对SHOW PROFILE和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

如果在Linux上给出了-DBUILD_CONFIG = mysql_release选项,则默认情况下必须链接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_SECTION项目
    • 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

是否支持优化器跟踪。

  • -DREPRODUCIBLE_BUILD=bool

对于Linux系统上的构建,此选项控制是否要特别注意创建与构建位置和时间无关的构建结果。这个选项是在MySQL 5.7.19中添加的。

  • -DWIN_DEBUG_NO_INLINE=bool

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

  • -DWITH_ASAN=bool

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

  • -DWITH_ASAN_SCOPE=bool

是否启用
-fsanitize-address-use-after-scope
用于范围后使用检测的AddressSanitizer Clang标志。默认值为 OFF要使用此选项,还必须启用 -DWITH_ASAN。

  • -DWITH_AUTHENTICATION_LDAP=bool

如果无法构建LDAP认证插件,是否报告错误:

    • 如果禁用此选项(默认设置),则在找到所需的头文件和库的情况下将构建LDAP插件。如果不是,则 CMake会显示一条注释。
    • 如果启用此选项,则无法找到所需的头文件和库会导致 CMake产生错误,从而阻止构建服务器。

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

  • -DWITH_AUTHENTICATION_PAM=bool

是否为包含此插件的源树构建PAM身份验证插件。如果指定了此选项并且无法编译插件,则构建将失败。

  • -DWITH_AWS_SDK=path_name

Amazon Web Services软件开发套件的位置。这个选项是在MySQL 5.7.19中添加的。

  • -DWITH_BOOST=path_name

Boost库是构建MySQL所必需的。这些 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并将对象输出放置在MySQL源树的bld子目录中,则可以使用Boost进行如下构建:

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

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

  • -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也将启用Debug Sync。

  • -DWITH_DEFAULT_FEATURE_SET=bool

是否使用来自 cmake / build_configurations / feature_set.cmake的标志。

  • -DWITH_EDITLINE=value

使用哪个libedit/editline 库。允许的值为 bundled(默认值)和 systemWITH_EDITLINE替换了已删除的WITH_LIBEDIT。

  • -DWITH_EMBEDDED_SERVER=bool

是否构建libmysqld嵌入式服务器库。从MySQL 5.7.17开始不推荐使用libmysqld嵌入式服务器库,并且已在MySQL 8.0中将其删除。

  • -DWITH_EMBEDDED_SHARED_LIBRARY=bool

是否构建共享的libmysqld 嵌入式服务器库。从MySQL 5.7.17开始不推荐使用libmysqld嵌入式服务器库,并且已在MySQL 8.0中将其删除。

  • -DWITH_EXTRA_CHARSETS=name

要包括的额外字符集:

    • all:所有字符集。这是默认值。
    • complex:复杂的字符集。
    • none:没有多余的字符集。
  • -DWITH_GMOCK=path_name

googlemock发行版的路径,可与基于Google Test的单元测试一起使用。选项值是分发Zip文件的路径。或者将 WITH_GMOCK环境变量设置为路径名。也可以使用 -DENABLE_DOWNLOADS=1,在这种情况下CMake从GitHub下载发行版。如果您构建的MySQL没有基于Google Test的单元测试(通过配置wihout WITH_GMOCK),则 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(默认)和system。 在MySQL 5.7.31之前,如果指定system,则使用系统libevent库(如果存在),否则将发生错误。 在MySQL 5.7.31和更高版本中,如果指定了system并且找不到系统libevent库,则无论发生什么错误,都不会使用bundled的libevent。libevent库是InnoDB memcached和X Plugin所必需的 。

  • -DWITH_LIBWRAP=bool

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

  • -DWITH_LZ4=lz4_type

该选项WITH_LZ4指示zlib支持的来源:

    • bundled使用与发行版捆绑在一起的LZ4库。这是默认值。
    • system使用系统LZ4库。 如果WITH_LZ4设置为该值,则不会构建lz4_decompress实用程序。 在这种情况下,可以改用system lz4命令。
  • -DWITH_MECAB={disabled|system|path_name}

使用此选项编译MeCab解析器。如果已将MeCab安装到其默认安装目录,请设置-DWITH_MECAB = system。系统选项适用于使用本机软件包管理实用程序从源或二进制文件执行的MeCab安装。 如果已将MeCab安装到自定义安装目录,请指定MeCab安装的路径。 例如,-DWITH_MECAB = /opt/mecab。 如果系统选项不起作用,则在所有情况下都应指定MeCab安装路径。

  • -DWITH_MSAN=bool

是否为支持它的编译器启用MemorySanitizer。默认值为OFF。为了使此选项生效(如果启用),还必须在启用该选项的情况下编译所有链接到MySQL的库。

  • -DWITH_MSCRT_DEBUG=bool

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

  • -DWITH_NUMA=bool

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

    • 如果没有NUMA选项(正常情况),CMake会继续正常运行,仅产生以下警告:NUMA库丢失或所需版本不可用
    • 在-DWITH_NUMA = ON的情况下,CMake会因以下错误而终止:缺少NUMA库或所需的版本不可用

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

  • -DWITH_PROTOBUF=protobuf_type

使用哪个协议缓冲区包。 protobuf_type可以是以下值之一:

    • bundled:使用与发行版捆绑在一起的软件包。这是默认值。
    • system:使用系统上安装的软件包。

其他值将被忽略,并回退到 bundled。这个选项是在MySQL 5.7.12中添加的。

  • -DWITH_RAPID=bool

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

  • -DWITH_SASL=value

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

  • -DWITH_SSL={ssl_type| path_name}

为了支持加密连接,用于生成随机数的熵以及其他与加密相关的操作,必须使用SSL库来构建MySQL。此选项指定要使用的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值更好,因为它可以防止CMake检测和使用系统上安装的较旧或错误的OpenSSL版本。 (执行相同操作的另一种允许的方法是将WITH_SSL设置为system并将CMAKE_PREFIX_PATH选项设置为path_name。)
  • -DWITH_SYSTEMD=bool

是否启用安装systemd支持文件。默认情况下,此选项处于禁用状态。启用后,将安装systemd支持文件,并且不会安装诸如mysqld_safe和System V初始化脚本之类的脚本。 在无法使用systemd的平台上,启用WITH_SYSTEMD会导致CMake错误。

  • -DWITH_TEST_TRACE_PLUGIN=bool

是否构建测试协议跟踪客户端插件。默认情况下,此选项处于禁用状态。除非启用
WITH_CLIENT_PROTOCOL_TRACING选项,否则启用此选项无效。如果MySQL同时配置了两个选项,则libmysqlclient客户端库是使用内置的测试协议跟踪插件构建的,并且所有标准MySQL客户端都会加载该插件。但是,即使启用了测试插件,默认情况下它也不起作用。使用环境变量可以控制插件。

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

  • -DWITH_UBSAN=bool

是否为支持它的编译器启用“未定义行为清理器”。默认值为 OFF

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


5.编译器标志

  • -DCMAKE_C_FLAGS="flags

C编译器的标志。

  • -DCMAKE_CXX_FLAGS="flags

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_FLAGS CMake选项。提供自己的编译器标志时,您可能还需要指定CMAKE_BUILD_TYPE。

如果设置影响优化的标志(-Onumber),则必须设置CMAKE_C_FLAGS_build_type和/或
CMAKE_CXX_FLAGS_build_type选项,其中build_type对应于CMAKE_BUILD_TYPE值。 要为默认的构建类型(RelWithDebInfo)指定不同的优化设置,请设置
CMAKE_C_FLAGS_RELWITHDEBINFO和
CMAKE_CXX_FLAGS_RELWITHDEBINFO选项。 例如,要在具有-O3和调试符号的Linux上进行编译,请执行以下操作:

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


6.用于编译NDB群集的CMake选项

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

  • -DMEMCACHED_HOME=dir_name

使用安装在dir_name指定的系统目录中的memcached(1.6版或更高版本)执行构建。此安装中用于构建的文件包括memcached二进制文件,头文件和库,以及memcached_utilities库和头文件engine_testapp.h

使用捆绑的memcached源构建ndbmemcache时,必须将此选项保持未设置状态(WITH_BUNDLED_MEMCACHED选项); 换句话说,默认情况下使用捆绑的来源。

虽然从外部源编译内存缓存时可以使用其他CMake选项(例如,用于SASL授权和提供dtrace支持),但当前未为与NDB Cluster捆绑在一起的内存缓存源启用这些选项。

  • -DWITH_BUNDLED_LIBEVENT={ON|OFF}

在构建具有ndbmemcached支持的NDB群集时,请使用NDB群集源中包含的libevent。 默认启用。 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}

在mysqld中建立并链接对NDB(NDBCLUSTER)存储引擎的支持。默认值为 ON

  • -DWITH_NDBCLUSTER={ON|OFF}


WITH_NDBCLUSTER_STORAGE_ENGINE 选项的别名

  • -DWITH_NDBMTD={ON|OFF}

构建多线程数据节点可执行文件 ndbmtd。默认值为 ON

  • -DWITH_NDB_BINLOG={ON|OFF}

默认情况下,在使用此选项构建的mysqld中启用二进制日志记录。 默认值为 ON。

  • -DWITH_NDB_DEBUG={ON|OFF}

启用构建NDB群集二进制文件的调试版本。默认值为 OFF。

  • -DWITH_NDB_JAVA={ON|OFF}

启用通过Java支持(包括)构建NDB集群 ClusterJ。默认情况下,此选项为ON。如果您不希望在Java支持下编译NDB集群,则必须在运行CMake时通过指定-DWITH_NDB_JAVA = OFF显式禁用它。 否则,如果找不到Java,则构建的配置将失败。

  • -DWITH_NDB_PORT=port

默认情况下构建的NDB群集管理服务器(ndb_mgmd)使用此端口。 如果未设置此选项,则默认情况下,管理服务器将尝试使用端口1186。

  • -DWITH_NDB_TEST={ON|OFF}

如果启用,请包括一组NDB API测试程序。默认值为 OFF。

相关推荐