CMake程序提供了对如何配置 MySQL 源代码分发的大量控制 。通常,您使用 CMake命令行上的选项来执行此操作。有关CMake支持的选项的信息,请在顶级源目录中运行以下任一命令:
cmake . -LH
ccmake .
您还可以使用某些环境变量影响CMake 。请参阅 第 4.9 节,“环境变量”。
对于布尔选项,该值可以指定为 1 或
ON
启用该选项,或指定为 0 或
OFF
禁用该选项。
许多选项配置可以在服务器启动时覆盖的编译时默认值。例如,
配置默认安装基本目录位置、TCP/IP 端口号和 Unix 套接字文件的 、 和 选项可以在服务器启动时使用CMAKE_INSTALL_PREFIX
mysqld
MYSQL_TCP_PORT
的
、和
选项
进行
更改。在适用的情况下,配置选项说明指示相应的mysqld
启动选项。
MYSQL_UNIX_ADDR
--basedir
--port
--socket
以下部分提供了有关 CMake选项的更多信息。
下表显示了可用的CMake
选项。在该Default
列中,
PREFIX
代表
CMAKE_INSTALL_PREFIX
选项的值,它指定安装基目录。此值用作多个安装子目录的父位置。
表 2.13 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 |
||
ENABLED_LOCAL_INFILE |
是否为LOAD DATA启用LOCAL | OFF |
||
ENABLED_PROFILING |
是否启用查询分析代码 | ON |
||
ENABLE_DEBUG_SYNC |
是否启用 Debug Sync 支持 | ON |
5.6.36 | |
ENABLE_DOWNLOADS |
是否下载可选文件 | OFF |
||
ENABLE_DTRACE |
是否包含 DTrace 支持 | |||
ENABLE_GCOV |
是否包含 gcov 支持 | |||
ENABLE_GPROF |
启用 gprof(仅限优化的 Linux 版本) | OFF |
||
IGNORE_AIO_CHECK |
使用-DBUILD_CONFIG=mysql_release,忽略libaio检查 | OFF |
||
INNODB_PAGE_ATOMIC_REF_COUNT |
启用或禁用原子页面引用计数 | ON |
5.6.16 | |
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_MYSQLSHAREDIR |
共享数据目录 | PREFIX/share |
||
INSTALL_MYSQLTESTDIR |
mysql测试目录 | PREFIX/mysql-test |
||
INSTALL_PLUGINDIR |
插件目录 | PREFIX/lib/plugin |
||
INSTALL_SBINDIR |
服务器可执行目录 | PREFIX/bin |
||
INSTALL_SCRIPTDIR |
脚本目录 | PREFIX/scripts |
||
INSTALL_SECURE_FILE_PRIVDIR |
secure_file_priv 默认值 | platform specific |
5.6.34 | |
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR |
libmysqld 的 secure_file_priv 默认值 | 5.6.34 | ||
INSTALL_SHAREDIR |
aclocal/mysql.m4 安装目录 | PREFIX/share |
||
INSTALL_SQLBENCHDIR |
sql-bench目录 | PREFIX |
||
INSTALL_SUPPORTFILESDIR |
额外的支持文件目录 | PREFIX/support-files |
||
MEMCACHED_HOME |
内存缓存路径;过时的 | [none] |
5.6.51 | |
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.6.37 | ||
SUNPRO_CXX_LIBRARY |
Solaris 10+ 上的客户端链接库 | 5.6.20 | ||
SYSCONFDIR |
选项文件目录 | |||
TMPDIR |
tmpdir 默认值 | 5.6.16 | ||
WITHOUT_SERVER |
不搭建服务器 | OFF |
||
WITHOUT_xxx_STORAGE_ENGINE |
从构建中排除存储引擎 xxx | |||
WITH_ASAN |
启用 AddressSanitizer | OFF |
5.6.15 | |
WITH_BUNDLED_LIBEVENT |
构建 ndbmemcache 时使用捆绑的 libevent;过时的 | ON |
5.6.51 | |
WITH_BUNDLED_MEMCACHED |
构建 ndbmemcache 时使用捆绑的 memcached;过时的 | ON |
5.6.51 | |
WITH_CLASSPATH |
为 Java 构建 MySQL Cluster Connector 时使用的类路径。默认为空字符串。 |
|
||
WITH_DEBUG |
是否包括调试支持 | OFF |
||
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用默认的编译器选项 | ON |
||
WITH_DEFAULT_FEATURE_SET |
是否使用默认特征集 | ON |
||
WITH_EDITLINE |
使用哪个 libedit/editline 库 | bundled |
5.6.12 | |
WITH_EMBEDDED_SERVER |
是否搭建嵌入式服务器 | OFF |
||
WITH_EMBEDDED_SHARED_LIBRARY |
是否构建共享嵌入式服务器库 | OFF |
5.6.17 | |
WITH_ERROR_INSERT |
在 NDB 存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。 | OFF |
||
WITH_EXTRA_CHARSETS |
要包括哪些额外的字符集 | all |
||
WITH_GMOCK |
googlemock 分发路径 | |||
WITH_INNODB_MEMCACHED |
是否生成 memcached 共享库。 | OFF |
||
WITH_LIBEDIT |
使用捆绑的 libedit 库 | ON |
5.6.12 | |
WITH_LIBEVENT |
使用哪个 libevent 库 | bundled |
||
WITH_LIBWRAP |
是否包括 libwrap (TCP wrappers) 支持 | 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.6.27 | ||
WITH_SSL |
SSL 支持类型 | system |
||
WITH_SYMVER16 |
libmysqlclient.so.18 是否同时包含 symver 16 和 18 符号。 | OFF |
5.6.31 | |
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
安装库文件的位置。
在哪里安装手册页。
-DINSTALL_MYSQLSHAREDIR=
dir_name
安装共享数据文件的位置。
-DINSTALL_MYSQLTESTDIR=
dir_name
mysql-test
安装目录 在哪里。从 MySQL 5.6.12 开始,要禁止安装此目录,请将选项显式设置为空值 (-DINSTALL_MYSQLTESTDIR=
)。插件目录的位置。
该值可以在服务器启动时使用
--plugin_dir
选项设置。在哪里安装mysqld服务器。
在哪里安装mysql_install_db。
-DINSTALL_SECURE_FILE_PRIVDIR=
dir_name
secure_file_priv
系统变量 的默认值 。默认值是特定于平台的,取决于 CMake选项的值;参见 第 5.1.7 节“服务器系统变量”中系统变量的描述。INSTALL_LAYOUT
secure_file_priv
这个选项是在 MySQL 5.6.34 中添加的。要为
libmysqld
嵌入式服务器设置值,请使用INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR
。-DINSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR=
dir_name
嵌入式服务器
secure_file_priv
系统变量 的默认值 。libmysqld
这个选项是在 MySQL 5.6.34 中添加的。在哪里安装
aclocal/mysql.m4
。-DINSTALL_SQLBENCHDIR=
dir_name
sql-bench
安装目录 在哪里。要禁止安装此目录,请将该选项显式设置为空值 (-DINSTALL_SQLBENCHDIR=
)。-DINSTALL_SUPPORTFILESDIR=
dir_name
在哪里安装额外的支持文件。
MySQL 数据目录的位置。
该值可以在服务器启动时使用
--datadir
选项设置。ODBC 的位置包括目录,并且可以在配置连接器/ODBC 时使用。
ODBC 库目录的位置,可以在配置连接器/ODBC 时使用。
默认
my.cnf
选项文件目录。这个位置不能在服务器启动时设置,但你可以使用选项用给定的选项文件启动服务器 ,其中是文件的完整路径名。
--defaults-file=
file_name
file_name
用于
tmpdir
系统变量的默认位置。如果未指定,则该值默认为P_tmpdir
in<stdio.h>
。这个选项是在 MySQL 5.6.16 中添加的。
存储引擎构建为插件。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为必须使用INSTALL PLUGIN
语句或--plugin-load
选项安装到服务器中才能使用的动态库)。某些插件可能不支持静态或动态构建。
、InnoDB
、
MyISAM
、
MERGE
和
engines 是必需MEMORY
的
CSV
(总是编译到服务器中)并且不需要显式安装。
要将存储引擎静态编译到服务器中,请使用
. 一些允许的值是
、、
、、
(分区支持)和
(性能模式)。例子:
-DWITH_
engine
_STORAGE_ENGINE=1engine
ARCHIVE
BLACKHOLE
EXAMPLE
FEDERATED
PARTITION
PERFSCHEMA
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
要构建支持 NDB Cluster 的 MySQL,请使用该
WITH_NDBCLUSTER
选项。
WITH_NDBCLUSTER
仅在使用 NDB Cluster 源构建 NDB Cluster 时才受支持。它不能用于在其他 MySQL 源代码树或发行版中启用集群支持。在 NDB Cluster 源分发中,默认情况下启用它。有关更多信息,请参阅
第 18.3.1.4 节,“在 Linux 上从源构建 NDB Cluster”和
第 18.3.2.2 节,“在 Windows 上从源编译和安装 NDB Cluster”。
要从构建中排除存储引擎,请使用
. 例子:
-DWITHOUT_
engine
_STORAGE_ENGINE=1
-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
选项设置。-
笔记
从 MySQL 5.6.36 开始,
ENABLE_DEBUG_SYNC
删除并启用WITH_DEBUG
调试同步。是否将调试同步工具编译到服务器中。该设施用于测试和调试。默认情况下启用此选项,但除非 MySQL 配置为启用调试,否则无效。如果启用了调试并且您想禁用调试同步,请使用
-DENABLE_DEBUG_SYNC=0
.编译时,Debug Sync 在运行时默认处于禁用状态。要启用它,请使用 选项启动mysqld ,其中超时值大于 0。(默认值为 0,禁用调试同步。)成为各个同步点的默认超时。
--debug-sync-timeout=
N
N
N
有关调试同步工具的描述以及如何使用同步点,请参阅 MySQL 内部结构:测试同步。
是否下载可选文件。例如,启用此选项后,CMake会下载测试套件用于运行单元测试的 Google Test 发行版。
是否包括对 DTrace 探测的支持。有关 DTrace 的信息,请参阅 第 5.8.4 节,“使用 DTrace 跟踪 mysqld”
是否在没有 MySQL Server 的情况下构建。默认为 OFF,即构建服务器。
这被认为是一个实验性的选择;最好与服务器一起构建。
是否包含 gcov 支持(仅限 Linux)。
是否启用
gprof
(仅限优化的 Linux 版本)。此选项控制 MySQL 客户端库的内置默认
LOCAL
功能。因此,没有明确安排的客户端LOCAL
根据ENABLED_LOCAL_INFILE
MySQL 构建时指定的设置禁用或启用功能。默认情况下,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 PROFILE
andSHOW PROFILES
语句)。如果
-DBUILD_CONFIG=mysql_release
在 Linux 上给出了该选项,则libaio
默认情况下必须链接库。如果您没有libaio
或不想安装它,您可以通过指定-DIGNORE_AIO_CHECK=1
.-DINNODB_PAGE_ATOMIC_REF_COUNT=
bool
是否启用或禁用原子页面引用计数。从缓冲池中获取和释放页面以及跟踪页面状态是昂贵且复杂的操作。使用页互斥锁来跟踪这些操作并不能很好地扩展。使用
INNODB_PAGE_ATOMIC_REF_COUNT=ON
(默认),在可用的情况下使用原子来跟踪获取和释放。对于不支持原子的平台,设置INNODB_PAGE_ATOMIC_REF_COUNT=OFF
为禁用原子页面引用计数。当启用原子页面引用计数时(默认), “
[Note] InnoDB: Using atomics to ref count buffer pool pages
”会在服务器启动时打印到错误日志中。如果禁用原子页面引用计数,则打印 “[Note] InnoDB: Using mutexes to ref count buffer pool pages
” 。INNODB_PAGE_ATOMIC_REF_COUNT
是在修复 MySQL Bug #68079 时引入的。该选项在 MySQL 5.7.5 中被删除。从 MySQL 5.7.5 开始构建 MySQL 需要支持原子,这使得该选项已过时。是否启用 MySQL 维护者特定的开发环境。如果启用,此选项会导致编译器警告变为错误。它还可能导致生成的代码发生一些小的变化,将一些变量初始化为 0。
对于 Windows 或 macOS,要合并到项目文件名中的项目名称。
服务器侦听 TCP/IP 连接的端口号。默认值为 3306。
该值可以在服务器启动时使用
--port
选项设置。服务器侦听套接字连接的 Unix 套接字文件路径。这必须是绝对路径名。默认值为
/tmp/mysql.sock
。该值可以在服务器启动时使用
--socket
选项设置。是否支持优化器跟踪。请参阅 MySQL 内部结构:跟踪优化器。
对于 Linux 系统上的构建,此选项控制是否要格外小心地创建独立于构建位置和时间的构建结果。
这个选项是在 MySQL 5.6.37 中添加的。
是否为支持它的编译器启用 AddressSanitizer。默认关闭。这个选项是在 MySQL 5.6.15 中添加的。
是否包括调试支持。
使用调试支持配置 MySQL 使您能够
--debug="d,parser_debug"
在启动服务器时使用该选项。这会导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪转储到服务器的标准错误输出。通常,此输出会写入错误日志。从 MySQL 5.6.36 开始,启用
WITH_DEBUG
还启用调试同步。有关调试同步工具的描述以及如何使用同步点,请参阅 MySQL 内部结构:测试同步。-DWITH_DEFAULT_FEATURE_SET=
bool
是否使用来自
cmake/build_configurations/feature_set.cmake
.使用哪个
libedit
/editline
库。允许的值为bundled
(默认值)和system
.WITH_EDITLINE
在 MySQL 5.6.12 中添加。它取代了WITH_LIBEDIT
, 已被删除。是否构建
libmysqld
嵌入式服务器库。-DWITH_EMBEDDED_SHARED_LIBRARY=
bool
是否构建一个共享的
libmysqld
嵌入式服务器库。这个选项是在 MySQL 5.6.17 中添加的。要包括哪些额外的字符集:
all
: 所有字符集。这是默认值。complex
: 复杂的字符集。none
: 没有额外的字符集。
googlemock 发行版的路径,用于基于 Google 测试的单元测试。选项值是分发 Zip 文件的路径。或者,将
WITH_GMOCK
环境变量设置为路径名。也可以使用-DENABLE_DOWNLOADS=1
CMake 从GitHub 下载发行版。如果您在没有基于 Google Test 的单元测试(通过配置 wihout
WITH_GMOCK
)的情况下构建 MySQL, CMake会显示一条消息,指示如何下载它。是否生成 memcached 共享库(
libmemcached.so
和innodb_engine.so
)。使用哪个
libevent
库。允许的值为bundled
(默认值)system
、 和yes
。如果您指定system
或yes
,则使用系统libevent
库(如果存在)。如果找不到系统库,libevent
则使用捆绑库。memcached 需要该libevent
库 。InnoDB
是否使用
libedit
与发行版捆绑在一起的库。WITH_LIBEDIT
在 MySQL 5.6.12 中被删除。改用WITH_EDITLINE
。是否包含
libwrap
(TCP 包装器)支持。显式设置 NUMA 内存分配策略。 CMake
WITH_NUMA
根据当前平台是否NUMA
支持设置默认 值。对于不支持 NUMA 的平台, CMake的行为如下:没有 NUMA 选项(正常情况), CMake正常继续,只产生这个警告:NUMA library missing or required version not available
使用
-DWITH_NUMA=ON
, CMake中止并出现此错误:NUMA 库丢失或所需版本不可用
这个选项是在 MySQL 5.6.27 中添加的。
-DWITH_SSL={
|ssl_type
path_name
}为了支持加密连接、随机数生成的熵和其他与加密相关的操作,MySQL 必须使用 SSL 库构建。此选项指定要使用的 SSL 库。
ssl_type
可以是以下值之一:no
: 不支持 SSL。这是 MySQL 5.6.6 之前的默认设置。从 5.6.6 开始,这不再是允许的值,默认值为bundled
.yes
:如果存在,则使用系统 OpenSSL 库,否则使用与发行版捆绑在一起的库。bundled
:使用与发行版捆绑在一起的 SSL 库。这是 MySQL 5.6.6 到 5.6.45 的默认设置。从 5.6.46 开始,这不再是允许的值,默认值为system
.system
: 使用系统 OpenSSL 库。这是 MySQL 5.6.46 的默认设置。
path_name
,允许 MySQL 5.6.7 及更高版本,是要使用的 OpenSSL 安装的路径名。这可能比使用ssl_type
值更可取,system
因为它可以防止 CMake 检测和使用系统上安装的较旧或不正确的 OpenSSL 版本。(另一种允许做同样事情的方法是设置WITH_SSL
为system
并将CMAKE_PREFIX_PATH
选项设置为path_name
。)
有关配置 SSL 库的其他信息,请参阅 第 2.9.6 节,“配置 SSL 库支持”。
如果启用,此选项会导致
libmysqlclient
客户端库包含额外的符号以与libmysqlclient
RHEL/OEL 5、6 和 7 兼容;和 Fedora 版本。中出现的所有符号libmysqlclient.so.16
都标有 symver 16 inlibmsqlclient.so.18
,使这些符号同时具有 symver 16 和 18。默认值为OFF
。这个选项是在 MySQL 5.6.31 中添加的。
如果启用,使用单元测试编译 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。这个选项是在 MySQL 5.6.20 中添加的。
要指定您自己的 C 和 C++ 编译器标志,对于不影响优化的标志,请使用
CMAKE_C_FLAGS
和
CMAKE_CXX_FLAGS
CMake 选项。
在提供您自己的编译器标志时,您可能还想指定CMAKE_BUILD_TYPE
。
例如,要在 64 位 Linux 机器上创建 32 位发布版本,请执行以下操作:
mkdir bld
cd bld
cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
如果设置影响优化的标志 ( ),则必须设置
和/或
选项,其中对应于值。要为默认构建类型 ( )
指定不同的优化,请设置和
选项。例如,要在 Linux 上使用和使用调试符号进行编译,请执行以下操作:
-O
number
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
cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
以下选项用于使用 NDB Cluster 源构建 NDB Cluster 时使用;使用 MySQL 5.6 服务器树中的源时,当前不支持它们。
NDB
NDB 7.3.32 和 NDB 7.4.31 中删除了对 memcached 的支持,因此不再支持NDB
在这些或更高版本中构建此选项。-DWITH_BUNDLED_LIBEVENT={ON|OFF}
NDB
NDB 7.3.32 和 NDB 7.4.31 中删除了对 memcached 的支持,因此不再支持NDB
在这些或更高版本中构建此选项。-DWITH_BUNDLED_MEMCACHED={ON|OFF}
NDB
NDB 7.3.32 和 NDB 7.4.31 中删除了对 memcached 的支持,因此不再支持NDB
在这些或更高版本中构建此选项。设置用于构建 NDB Cluster Connector for Java 的类路径。默认为空。在 MySQL NDB Cluster 7.2.9 及更高版本中,如果
-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
.此选项是在 MySQL NDB Cluster 7.2.9 中添加的,默认情况下为 ON。如果您不希望使用 Java 支持编译 NDB Cluster,则必须通过
-DWITH_NDB_JAVA=OFF
在运行 CMake时指定来显式禁用它。否则,如果找不到 Java,构建配置将失败。导致构建的 NDB Cluster 管理服务器(ndb_mgmd)默认使用它
port
。如果未设置此选项,生成的管理服务器默认会尝试使用端口 1186。如果启用,包括一组 NDB API 测试程序。默认为关闭。