The CMake program provides a great deal of control over how you configure a MySQL source distribution. Typically, you do this using options on the CMake command line. For information about options supported by CMake, run either of these commands in the top-level source directory
$> cmake . -LH
$> ccmake .
You can also affect CMake using certain environment variables. See Section 6.9, “Environment Variables”.
For boolean options, the value may be specified as 1
or ON
to enable the option, or as 0
or OFF
to disable the option.
Many options configure compile-time defaults that can be overridden at server startup. For example, the CMAKE_INSTALL_PREFIX
, MYSQL_TCP_PORT
, and MYSQL_UNIX_ADDR
options that configure the default installation base directory location, TCP/IP port number, and Unix socket file can be changed at server startup with the --basedir
, --port
, and --socket
options for mysqld. Where applicable, configuration option descriptions indicate the corresponding mysqld startup option.
The following sections provide more information about CMake options.
The following table shows the available CMake options. In the Default
column, PREFIX
stands for the value of the CMAKE_INSTALL_PREFIX
option, which specifies the installation base directory. This value is used as the parent location for several of the installation subdirectories.
表 2.13 MySQL 源代码配置选项参考 (CMake)
格式 | 描述 | 默认 |
---|---|---|
ADD_GDB_INDEX |
是否启用在二进制文件中生成 .gdb_index 部分 | |
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 |
COMPILATION_COMMENT |
有关编译环境的注释 | |
COMPILATION_COMMENT_SERVER |
有关 mysqld 使用的编译环境的注释 | |
COMPRESS_DEBUG_SECTIONS |
压缩二进制可执行文件的调试部分 | OFF |
CPACK_MONOLITHIC_INSTALL |
包构建是否生成单个文件 | OFF |
DEFAULT_CHARSET |
默认服务器字符集 | utf8mb4 |
DEFAULT_COLLATION |
默认服务器排序规则 | utf8mb4_0900_ai_ci |
DISABLE_PSI_COND |
排除性能模式条件检测 | OFF |
DISABLE_PSI_DATA_LOCK |
排除性能模式数据锁检测 | 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 |
排除性能模式读写锁检测 | OFF |
DISABLE_PSI_SOCKET |
排除性能模式套接字检测 | OFF |
DISABLE_PSI_SP |
排除性能模式存储过程检测 | OFF |
DISABLE_PSI_STAGE |
排除性能模式阶段检测 | OFF |
DISABLE_PSI_STATEMENT |
排除性能模式语句检测 | OFF |
DISABLE_PSI_STATEMENT_DIGEST |
排除性能模式 statements_digest 检测 | OFF |
DISABLE_PSI_TABLE |
排除性能模式表检测 | OFF |
DISABLE_PSI_THREAD |
排除性能模式线程检测 | OFF |
DISABLE_PSI_TRANSACTION |
排除性能模式事务检测 | OFF |
ENABLED_LOCAL_INFILE |
是否为 LOAD DATA 启用 LOCAL | OFF |
ENABLED_PROFILING |
是否启用查询分析代码 | ON |
ENABLE_EXPERIMENTAL_SYSVARS |
是否启用实验性 InnoDB 系统变量 | OFF |
ENABLE_GCOV |
是否包含 gcov 支持 | |
ENABLE_GPROF |
启用 gprof(仅限优化后的 Linux 构建) | OFF |
FORCE_COLORED_OUTPUT |
是否对编译器输出进行着色 | OFF |
FORCE_INSOURCE_BUILD |
是否强制进行源代码内构建 | OFF |
FORCE_UNSUPPORTED_COMPILER |
是否允许使用不受支持的编译器 | OFF |
FPROFILE_GENERATE |
是否生成 profile guided optimization 数据 | OFF |
FPROFILE_USE |
是否使用 profile guided optimization 数据 | OFF |
HAVE_PSI_MEMORY_INTERFACE |
启用性能模式内存跟踪模块,用于在动态存储过对齐类型时使用的内存分配函数 | OFF |
IGNORE_AIO_CHECK |
对于 -DBUILD_CONFIG=mysql_release,忽略 libaio 检查 | OFF |
INSTALL_BINDIR |
用户可执行文件目录 | PREFIX/bin |
INSTALL_DOCDIR |
文档目录 | PREFIX/docs |
INSTALL_DOCREADMEDIR |
README 文件目录 | PREFIX |
INSTALL_INCLUDEDIR |
头文件目录 | PREFIX/include |
INSTALL_INFODIR |
Info 文件目录 | PREFIX/docs |
INSTALL_LAYOUT |
选择预定义的安装布局 | STANDALONE |
INSTALL_LIBDIR |
库文件目录 | PREFIX/lib |
INSTALL_MANDIR |
手册页目录 | PREFIX/man |
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_PRIV_LIBDIR |
安装私有库目录 | |
INSTALL_SBINDIR |
服务器可执行文件目录 | PREFIX/bin |
INSTALL_SECURE_FILE_PRIVDIR |
secure_file_priv 的默认值 | 平台特定 |
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 |
MSVC_CPPCHECK |
启用 MSVC 代码分析。 | ON |
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/macOS 项目名称 | MySQL |
MYSQL_TCP_PORT |
TCP/IP 端口号 | 3306 |
MYSQL_UNIX_ADDR |
Unix 套接字文件 | /tmp/mysql.sock |
NDB_UTILS_LINK_DYNAMIC |
导致 NDB 工具动态链接到 ndbclient | |
ODBC_INCLUDES |
ODBC 包含目录 | |
ODBC_LIB_DIR |
ODBC 库目录 | |
OPTIMIZER_TRACE |
是否支持优化器跟踪 | |
OPTIMIZE_SANITIZER_BUILDS |
是否优化 sanitizer 构建 | ON |
REPRODUCIBLE_BUILD |
格外注意创建独立于构建位置和时间的构建结果 | |
SHOW_SUPPRESSED_COMPILER_WARNING |
是否显示被抑制的编译器警告,并且不使用 -Werror 失败。 | OFF |
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_ANT |
构建 GCS Java 包装器使用的 Ant 的路径 | |
WITH_ASAN |
启用 AddressSanitizer | OFF |
WITH_ASAN_SCOPE |
启用 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志 | OFF |
WITH_AUTHENTICATION_CLIENT_PLUGINS |
如果构建了任何相应的服务器身份验证插件,则自动启用 | |
WITH_AUTHENTICATION_LDAP |
如果无法构建 LDAP 身份验证插件,是否报告错误 | OFF |
WITH_AUTHENTICATION_PAM |
构建 PAM 身份验证插件 | OFF |
WITH_AWS_SDK |
Amazon Web Services 软件开发工具包的位置 | |
WITH_BUILD_ID |
在 Linux 系统上,生成唯一的构建 ID | ON |
WITH_CLASSPATH |
构建 MySQL Cluster Connector for Java 时要使用的类路径。默认值为一个空字符串。 |
|
WITH_CLIENT_PROTOCOL_TRACING |
构建客户端协议跟踪框架 | ON |
WITH_CURL |
curl 库的位置 | |
WITH_DEBUG |
是否包含调试支持 | OFF |
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用默认编译器选项 | ON |
WITH_DEVELOPER_ENTITLEMENTS |
是否将 'get-task-allow' 授权添加到 macOS 上的所有可执行文件,以便在服务器意外停止时生成核心转储 | OFF |
WITH_EDITLINE |
要使用的 libedit/editline 库 | bundled |
WITH_ERROR_INSERT |
在 NDB 存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。 | OFF |
WITH_ICU |
ICU 支持的类型 | bundled |
WITH_INNODB_EXTRA_DEBUG |
是否包含 InnoDB 的额外调试支持。 | OFF |
WITH_JEMALLOC |
是否链接到 -ljemalloc | OFF |
WITH_LD |
是否使用 LLVM lld 或 mold 链接器 |
|
WITH_LIBEVENT |
要使用的 libevent 库 | bundled |
WITH_LIBWRAP |
是否包含 libwrap (TCP 包装器) 支持 | OFF |
WITH_LOCK_ORDER |
是否启用 LOCK_ORDER 工具 | OFF |
WITH_LSAN |
是否运行 LeakSanitizer,不使用 AddressSanitizer | OFF |
WITH_LTO |
启用链接时优化器 | OFF |
WITH_LZ4 |
LZ4 库支持的类型 | bundled |
WITH_MECAB |
编译 MeCab | |
WITH_MSAN |
启用 MemorySanitizer | OFF |
WITH_MSCRT_DEBUG |
启用 Visual Studio CRT 内存泄漏跟踪 | OFF |
WITH_MYSQLX |
是否禁用 X 协议 | ON |
WITH_NDB |
构建 MySQL NDB Cluster,包括 NDB 存储引擎和所有 NDB 程序 | OFF |
WITH_NDBAPI_EXAMPLES |
构建 API 示例程序。 | OFF |
WITH_NDBCLUSTER |
NDB 8.0.30 及更早版本:构建 NDB 存储引擎。NDB 8.0.31 及更高版本:已弃用;使用 WITH_NDB 代替 | OFF |
WITH_NDBCLUSTER_STORAGE_ENGINE |
在 NDB 8.0.31 之前,仅供内部使用。NDB 8.0.31 及更高版本:切换(仅)包含 NDBCLUSTER 存储引擎 | ON |
WITH_NDBMTD |
构建多线程数据节点二进制文件 | ON |
WITH_NDB_DEBUG |
生成用于测试或故障排除的调试构建。 | OFF |
WITH_NDB_JAVA |
启用构建 Java 和 ClusterJ 支持。默认情况下启用。仅在 MySQL Cluster 中受支持。 | ON |
WITH_NDB_PORT |
使用此选项构建的管理服务器使用的默认端口。如果未使用此选项构建它,则管理服务器的默认端口为 1186。 | [none] |
WITH_NDB_TEST |
包含 NDB API 测试程序。 | OFF |
WITH_NDB_TLS_SEARCH_PATH |
NDB 程序用于搜索 TLS 证书和密钥文件的默认路径。 | $HOME/ndb-tls |
WITH_NUMA |
设置 NUMA 内存分配策略 | |
WITH_PACKAGE_FLAGS |
对于通常用于 RPM/DEB 包的标志,是否将它们添加到这些平台上的独立构建中 | |
WITH_PROTOBUF |
要使用的 Protocol Buffers 包 | bundled |
WITH_RAPID |
是否构建快速开发周期插件 | ON |
WITH_RAPIDJSON |
RapidJSON 支持的类型 | bundled |
WITH_ROUTER |
是否构建 MySQL Router | ON |
WITH_SHOW_PARSE_TREE |
对 SHOW PARSE_TREE 调试语句的支持 | |
WITH_SSL |
SSL 支持的类型 | system |
WITH_SYSTEMD |
启用 systemd 支持文件的安装 | OFF |
WITH_SYSTEMD_DEBUG |
启用额外的 systemd 调试信息 | OFF |
WITH_SYSTEM_LIBS |
设置未明确设置的库选项的系统值 | OFF |
WITH_TCMALLOC |
是否链接到 -ltcmalloc。BUNDLED 仅在 Linux 上受支持 | OFF |
WITH_TEST_TRACE_PLUGIN |
构建测试协议跟踪插件 | OFF |
WITH_TSAN |
启用 ThreadSanitizer | OFF |
WITH_UBSAN |
启用 Undefined Behavior Sanitizer | OFF |
WITH_UNIT_TESTS |
使用单元测试编译 MySQL | ON |
WITH_UNIXODBC |
启用 unixODBC 支持 | OFF |
WITH_VALGRIND |
是否编译进 Valgrind 头文件 | OFF |
WITH_WIN_JEMALLOC |
包含 jemalloc.dll 的目录的路径 | |
WITH_ZLIB |
zlib 支持的类型 | bundled |
WITH_ZSTD |
zstd 支持的类型 | bundled |
WITH_xxx_STORAGE_ENGINE |
静态编译存储引擎 xxx 到服务器中 |
此选项使用 Oracle 用于生成官方 MySQL 版本的二进制发行版的相同构建选项配置源代码发行版。
在 Linux 系统上,生成唯一的构建 ID,该 ID 用作
build_id
系统变量的值,并在启动时写入 MySQL 服务器日志。将此选项设置为OFF
以禁用此功能。此选项对 Linux 以外的平台无效。
-DBUNDLE_RUNTIME_LIBRARIES=
bool
是否将运行时库捆绑到 Windows 的服务器 MSI 和 Zip 包中。
要生成的构建类型
RelWithDebInfo
:启用优化并生成调试信息。这是默认的 MySQL 构建类型。Release
:启用优化,但省略调试信息以减小构建大小。Debug
:禁用优化并生成调试信息。如果启用了WITH_DEBUG
选项,也会使用此构建类型。也就是说,-DWITH_DEBUG=1
与-DCMAKE_BUILD_TYPE=Debug
的效果相同。
选项值
None
和MinSizeRel
不受支持。-DCPACK_MONOLITHIC_INSTALL=
bool
此选项影响 make package 操作是生成多个安装包文件还是单个文件。如果禁用,则操作将生成多个安装包文件,如果您只想安装完整 MySQL 安装的一部分,这可能很有用。如果启用,它将生成一个用于安装所有内容的单个文件。
定义是否强制执行源内构建。建议使用源外构建,因为它们允许从相同源代码进行多次构建,并且可以通过删除构建目录来快速执行清理。要强制执行源内构建,请使用
-DFORCE_INSOURCE_BUILD=ON
调用 CMake。定义是否在命令行上编译时为 gcc 和 clang 启用彩色编译器输出。默认为
OFF
。
CMAKE_INSTALL_PREFIX
选项指示基本安装目录。其他以 INSTALL_
形式命名的选项,这些选项指示组件位置相对于前缀进行解释,并且它们的值是相对路径名。它们的值不应包含前缀。xxx
-DCMAKE_INSTALL_PREFIX=
dir_name
安装基本目录。
此值可以使用
--basedir
选项在服务器启动时设置。在何处安装用户程序。
在何处安装文档。
-DINSTALL_DOCREADMEDIR=
dir_name
在何处安装
README
文件。在何处安装头文件。
在何处安装 Info 文件。
选择预定义的安装布局
STANDALONE
: 与.tar.gz
和.zip
包使用的布局相同。这是默认值。RPM
: 与 RPM 包类似的布局。SVR4
: Solaris 包布局。DEB
: DEB 包布局(实验性)。
您可以选择预定义的布局,但可以通过指定其他选项来修改各个组件的安装位置。例如
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
该
INSTALL_LAYOUT
值决定了secure_file_priv
系统变量的默认值。有关此变量的描述,请参阅 第 7.1.8 节,“服务器系统变量”。库文件安装位置。
手册页安装位置。
-DINSTALL_MYSQLSHAREDIR=
dir_name
共享数据文件安装位置。
-DINSTALL_MYSQLTESTDIR=
dir_name
mysql-test
目录的安装位置。要禁止安装此目录,请将该选项显式设置为空值 (-DINSTALL_MYSQLTESTDIR=
)。-DINSTALL_PKGCONFIGDIR=
dir_name
要安装
mysqlclient.pc
文件以供 pkg-config 使用的目录。默认值为INSTALL_LIBDIR/pkgconfig
,除非INSTALL_LIBDIR
以/mysql
结尾,在这种情况下,该目录将首先被移除。插件目录的位置。
此值可以在服务器启动时使用
--plugin_dir
选项设置。-DINSTALL_PRIV_LIBDIR=
dir_name
动态库目录的位置。
默认位置。 对于 RPM 构建,这是
/usr/lib64/mysql/private/
,对于 DEB,这是/usr/lib/mysql/private/
,而对于 TAR,这是lib/private/
。Protobuf。 由于这是一个私有位置,因此加载器(例如 Linux 上的
ld-linux.so
)可能在没有帮助的情况下无法找到libprotobuf.so
文件。为了指导加载器,将RPATH=$ORIGIN/../$INSTALL_PRIV_LIBDIR
添加到 mysqld 和 mysqlxtest。这在大多数情况下都有效,但当使用 资源组 功能时,mysqld 是setsuid
,并且加载器会忽略任何包含$ORIGIN
的RPATH
。为了克服这个问题,在 DEB 和 RPM 版本的 mysqld 中设置了目录的显式完整路径,因为目标位置是已知的。对于 tarball 安装,需要使用 patchelf 等工具对 mysqld 进行修补。mysqld 服务器安装位置。
-DINSTALL_SECURE_FILE_PRIVDIR=
dir_name
secure_file_priv
系统变量的默认值。默认值是特定于平台的,并且取决于INSTALL_LAYOUT
CMake 选项的值;有关secure_file_priv
系统变量的描述,请参阅 第 7.1.8 节,“服务器系统变量”。aclocal/mysql.m4
安装位置。-DINSTALL_STATIC_LIBRARIES=
bool
是否安装静态库。默认值为
ON
。如果设置为OFF
,则不会安装以下库文件:libmysqlclient.a
,libmysqlservices.a
。-DINSTALL_SUPPORTFILESDIR=
dir_name
额外支持文件安装位置。
是否对 mysqld 二进制文件中的符号顺序进行随机化。默认值为
OFF
。此选项仅应在调试目的时启用。LINK_RANDOMIZE
选项的种子值。该值是一个字符串。默认值为mysql
,这是一个任意的选择。MySQL 数据目录的位置。
此值可以在服务器启动时使用
--datadir
选项设置。ODBC 包含目录的位置,这可能在配置 Connector/ODBC 时使用。
ODBC 库目录的位置,这可能在配置 Connector/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_tmpdir
(在<stdio.h>
中)。
存储引擎作为插件构建。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用 INSTALL PLUGIN
语句或 --plugin-load
选项安装到服务器中,才能使用它)。某些插件可能不支持静态或动态构建。
该 InnoDB
, MyISAM
, MERGE
, MEMORY
和 CSV
引擎是强制性的(始终编译到服务器中),无需显式安装。
要将存储引擎静态编译到服务器中,请使用 -DWITH_
。一些允许的 engine
_STORAGE_ENGINE=1engine
值是 ARCHIVE
, BLACKHOLE
, EXAMPLE
和 FEDERATED
。示例
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
要构建支持 NDB Cluster 的 MySQL,请使用 WITH_NDB
选项。
无法在没有 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
此选项确定是否启用在二进制文件中生成
.gdb_index
区段,这将使在调试器中加载它们更快。默认情况下该选项处于禁用状态。 lld 链接器用于,并且被禁用。 如果使用除 lld 或 GNU gold 以外的链接器,则此选项无效。关于编译环境的描述性注释。虽然 mysqld 使用
COMPILATION_COMMENT_SERVER
,但其他程序使用COMPILATION_COMMENT
。-DCOMPRESS_DEBUG_SECTIONS=
bool
是否压缩二进制可执行文件(仅限 Linux)的调试部分。压缩可执行调试部分可以节省空间,但会增加构建过程中的 CPU 时间。
默认值为
OFF
。如果未显式设置此选项,但设置了COMPRESS_DEBUG_SECTIONS
环境变量,则此选项将从该变量中获取其值。-DCOMPILATION_COMMENT_SERVER=
string
关于编译环境的描述性注释,供 mysqld 使用(例如,设置
version_comment
系统变量)。除服务器以外的程序使用COMPILATION_COMMENT
。-DDEFAULT_CHARSET=
charset_name
服务器字符集。默认情况下,MySQL 使用
utf8mb4
字符集。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
、utf8mb3
、utf8mb4
、utf16
、utf16le
、utf32
中的任何一个。此值可以在服务器启动时使用
--character-set-server
选项设置。-DDEFAULT_COLLATION=
collation_name
服务器排序规则。默认情况下,MySQL 使用
utf8mb4_0900_ai_ci
。使用SHOW COLLATION
语句确定每个字符集可以使用哪些排序规则。此值可以在服务器启动时使用
--collation_server
选项设置。是否排除性能模式条件检测。默认值为
OFF
(包含)。是否排除性能模式文件检测。默认值为
OFF
(包含)。是否排除性能模式空闲检测。默认值为
OFF
(包含)。是否排除性能模式内存检测。默认值为
OFF
(包含)。是否排除性能模式元数据检测。默认值为
OFF
(包含)。是否排除性能模式互斥锁检测。默认值为
OFF
(包含)。是否排除性能模式读写锁检测。默认值为
OFF
(包含)。是否排除性能模式套接字检测。默认值为
OFF
(包含)。是否排除性能模式存储过程检测。默认值为
OFF
(包含)。是否排除性能模式阶段检测。默认值为
OFF
(包含)。是否排除性能模式语句检测。默认值为
OFF
(包含)。-DDISABLE_PSI_STATEMENT_DIGEST=
bool
是否排除性能模式语句摘要检测。默认值为
OFF
(包含)。是否排除性能模式表检测。默认值为
OFF
(包含)。排除性能模式预处理语句实例检测。默认值为
OFF
(包含)。排除性能模式线程检测。默认值为
OFF
(包含)。只有在没有任何检测的情况下构建时才禁用线程,因为其他检测依赖于线程。
-DDISABLE_PSI_TRANSACTION=
bool
排除性能模式事务检测。默认值为
OFF
(包含)。排除性能模式数据锁检测。默认值为
OFF
(包含)。排除性能模式服务器错误检测。默认值为
OFF
(包含)。-DENABLE_EXPERIMENTAL_SYSVARS=
bool
是否启用实验性
InnoDB
系统变量。实验性系统变量是为那些参与 MySQL 开发的人员准备的,应该只在开发或测试环境中使用,并且可能在将来的 MySQL 版本中被删除,恕不另行通知。有关实验性系统变量的信息,请参考 MySQL 源代码树中的/storage/innobase/handler/ha_innodb.cc
。可以通过搜索 “PLUGIN_VAR_EXPERIMENTAL” 来识别实验性系统变量。是否在没有 MySQL 服务器的情况下构建。默认值为 OFF,这将构建服务器。
这被认为是一个实验性选项;最好使用服务器进行构建。
是否包含 gcov 支持(仅限 Linux)。
是否启用 gprof(仅限优化后的 Linux 构建)。
此选项控制 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
也可以在运行时设置。请参阅 第 8.1.6 节,“LOAD DATA LOCAL 的安全注意事项”。是否启用查询分析代码(用于
SHOW PROFILE
和SHOW PROFILES
语句)。-DFORCE_UNSUPPORTED_COMPILER=
bool
默认情况下,CMake 检查支持的编译器的最低版本;要禁用此检查,请使用
-DFORCE_UNSUPPORTED_COMPILER=ON
。-DSHOW_SUPPRESSED_COMPILER_WARNINGS=
bool
显示被抑制的编译器警告,并且在使用
-Werror
时不会失败。默认值为OFF
。是否生成 profile guided optimization (PGO) 数据。此选项可用于实验使用 GCC 进行 PGO。有关使用
FPROFILE_GENERATE
和FPROFILE_USE
的信息,请参阅 MySQL 源代码分发版中的cmake/fprofile.cmake
。这些选项已在 GCC 8 和 9 上进行了测试。是否使用 profile guided optimization (PGO) 数据。此选项可用于实验使用 GCC 进行 PGO。有关使用
FPROFILE_GENERATE
和FPROFILE_USE
的信息,请参阅 MySQL 源代码分发版中的cmake/fprofile.cmake
文件。这些选项已在 GCC 8 和 9 上进行了测试。启用
FPROFILE_USE
还会启用WITH_LTO
。-DHAVE_PSI_MEMORY_INTERFACE=
bool
是否启用性能架构内存跟踪模块,用于在过对齐类型动态存储中使用的内存分配函数(
ut::aligned_
库函数)。name
如果在 Linux 上给出
-DBUILD_CONFIG=mysql_release
选项,则默认情况下必须链接libaio
库。如果您没有libaio
或者不想安装它,可以通过指定-DIGNORE_AIO_CHECK=1
来抑制对其的检查。每个表的最大索引数。默认值为 64。最大值为 255。小于 64 的值将被忽略,并将使用默认值 64。
是否启用 MySQL 维护者特定的开发环境。如果启用,此选项会导致编译器警告变为错误。
-DWITH_DEVELOPER_ENTITLEMENTS=
bool
是否将
get-task-allow
权限添加到所有可执行文件,以在服务器意外停止时生成核心转储。在 macOS 11+ 上,核心转储仅限于具有
com.apple.security.get-task-allow
权限的进程,此 CMake 选项会启用该权限。此权限允许其他进程附加并读取/修改进程内存,并允许--core-file
按预期工作。InnoDB
使用的互斥锁类型。选项包括event
:使用事件互斥锁。这是默认值,也是原始的InnoDB
互斥锁实现。sys
:在 UNIX 系统上使用 POSIX 互斥锁。如果可用,在 Windows 上使用CRITICAL_SECTION
对象。futex
:使用 Linux futex 代替条件变量来调度等待线程。
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 系统上的构建,此选项控制是否要格外小心地创建独立于构建位置和时间的构建结果。
对于
RelWithDebInfo
构建,此选项默认值为ON
。CMake 默认情况下使用标准链接器。可以选择传入
lld
或mold
来指定替代链接器。mold 必须是 2 或更高版本。此选项可以在除 Enterprise Linux 之外的其他基于 Linux 的系统上使用,Enterprise Linux 始终使用ld 链接器。
注意以前,选项
USE_LD_LLD
可用于启用(默认值)或显式禁用 LLVM lld 链接器以用于 Clang。在 MySQL 8.3 中,已删除USE_LD_LLD
。是否在 Windows 上禁用函数内联。默认值为
OFF
(启用内联)。设置 Ant 的路径,构建 GCS Java 包装器时需要。将
WITH_ANT
设置为保存 Ant 压缩包或解压缩存档的目录的路径。当WITH_ANT
未设置或设置为特殊值system
时,构建过程假定二进制ant
存在于$PATH
中。是否启用 AddressSanitizer,对于支持它的编译器。默认值为
OFF
。是否启用 AddressSanitizer
-fsanitize-address-use-after-scope
Clang 标志以进行使用后范围检测。默认情况下为关闭。要使用此选项,还必须启用-DWITH_ASAN
。-DWITH_AUTHENTICATION_CLIENT_PLUGINS=
bool
如果构建了任何相应的服务器身份验证插件,则此选项将自动启用。因此,它的值取决于其他CMake 选项,不应显式设置。
-DWITH_AUTHENTICATION_LDAP=
bool
是否在无法构建 LDAP 身份验证插件时报告错误
如果禁用此选项(默认值),则会在找到所需的标头文件和库时构建 LDAP 插件。如果找不到,CMake 会显示一条关于它的说明。
如果启用此选项,则无法找到所需的标头文件和库会导致 CMake 生成错误,从而阻止构建服务器。
-DWITH_AUTHENTICATION_PAM=
bool
是否构建 PAM 身份验证插件,适用于包含此插件的源树。(请参阅第 8.4.1.4 节,“PAM 可插拔身份验证”。)如果指定此选项,并且无法编译插件,则构建将失败。
Amazon Web Services 软件开发工具包的位置。
-DWITH_CLIENT_PROTOCOL_TRACING=
bool
是否将客户端协议跟踪框架构建到客户端库中。默认情况下,此选项已启用。
有关编写协议跟踪客户端插件的信息,请参阅编写协议跟踪插件。
另请参阅
WITH_TEST_TRACE_PLUGIN
选项。curl
库的位置。curl_type
可以是system
(使用系统curl
库)、curl
库的路径名、no
|off
|none
(禁用 curl 支持)或bundled
(使用extra/curl/
中的捆绑的 curl 分发版)。是否包含调试支持。
通过配置 MySQL 的调试支持,您可以在启动服务器时使用
--debug="d,parser_debug"
选项。这会导致用于处理 SQL 语句的 Bison 解析器将解析器跟踪信息转储到服务器的标准错误输出。通常,此输出会写入错误日志。用于
InnoDB
存储引擎的同步调试检查定义在UNIV_DEBUG
下,在使用WITH_DEBUG
选项编译调试支持时可用。当编译调试支持时,可以使用innodb_sync_debug
配置选项启用或禁用InnoDB
同步调试检查。启用
WITH_DEBUG
还会启用调试同步。此功能用于测试和调试。在编译时,调试同步在运行时默认禁用。要启用它,请使用--debug-sync-timeout=
选项启动 mysqld,其中N
N
是大于 0 的超时值。(默认值为 0,禁用调试同步。)N
将成为各个同步点的默认超时值。用于
InnoDB
存储引擎的同步调试检查在使用WITH_DEBUG
选项编译调试支持时可用。有关调试同步功能的描述以及如何使用同步点的说明,请参阅 MySQL 内部:测试同步。
要使用的
libedit
/editline
库。允许的值为bundled
(默认值)和system
。-DWITH_ICU={
icu_type
|path_name
}MySQL 使用国际化组件库(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
时可用。是否要链接到
-ljemalloc
。如果启用,则内置的malloc()
、calloc()
、realloc()
和free()
函数将被禁用。默认值为OFF
。WITH_JEMALLOC
和WITH_TCMALLOC
是互斥的。在 Windows 上,传递包含
jemalloc.dll
的目录路径以启用 jemalloc 功能。构建系统将jemalloc.dll
复制到与mysqld.exe
和/或mysqld-debug.exe
相同的目录中,并将其用于内存管理操作。如果未找到jemalloc.dll
或未导出必需的函数,则将使用标准内存函数。信息级日志消息将记录是否找到并使用了 jemalloc。此选项已为 Windows 的官方 MySQL 二进制文件启用。
要使用的
libevent
库。允许的值为bundled
(默认值)和system
。如果指定了system
并且找不到系统libevent
库,无论如何都会发生错误,并且不会使用捆绑的libevent
。libevent
库是 X Plugin 和 MySQL Router 所必需的。是否要包含
libwrap
(TCP 包装器)支持。是否要启用 LOCK_ORDER 工具。默认情况下,此选项处于禁用状态,服务器构建不包含任何工具。如果启用了工具,则 LOCK_ORDER 工具可用,并且可以按照 第 7.9.3 节,“LOCK_ORDER 工具” 中的描述使用。
注意启用
WITH_LOCK_ORDER
选项后,MySQL 构建需要 flex 程序。是否要运行 LeakSanitizer,而不运行 AddressSanitizer。默认值为
OFF
。是否要启用链接时优化器,如果编译器支持它。默认值为
OFF
,除非启用了FPROFILE_USE
。WITH_LZ4
选项指示zlib
支持的来源bundled
:使用与发行版捆绑的lz4
库。这是默认值。system
:使用系统lz4
库。
-DWITH_MECAB={disabled|system|
path_name
}使用此选项编译 MeCab 解析器。如果您已将 MeCab 安装到其默认安装目录,请设置
-DWITH_MECAB=system
。system
选项适用于从源代码或使用原生包管理工具从二进制文件进行的 MeCab 安装。如果您将 MeCab 安装到自定义安装目录,请指定 MeCab 安装的路径,例如-DWITH_MECAB=/opt/mecab
。如果system
选项不起作用,则指定 MeCab 安装路径应在所有情况下都起作用。有关相关信息,请参阅 第 14.9.9 节,“MeCab 全文解析器插件”。
是否要为支持它的编译器启用 MemorySanitizer。默认情况下已关闭。
为了使此选项在启用时生效,链接到 MySQL 的所有库也必须使用启用该选项编译。
是否要启用 Visual Studio CRT 内存泄漏跟踪。默认值为
OFF
。是否要启用 MSVC 代码分析。默认值为
ON
。是否要构建对 X Plugin 的支持。默认值为
ON
。请参阅 第 22 章,将 MySQL 用作文档存储。显式设置 NUMA 内存分配策略。CMake 根据当前平台是否具有
NUMA
支持来设置默认的WITH_NUMA
值。对于没有 NUMA 支持的平台,CMake 的行为如下没有 NUMA 选项(正常情况),CMake 将继续正常运行,只产生以下警告:NUMA 库缺失或所需的版本不可用
使用
-DWITH_NUMA=ON
,CMake 将使用以下错误中止:NUMA 库缺失或所需的版本不可用
对于通常用于 RPM 和 Debian 包的标志,是否要将它们添加到这些平台上的独立构建中。默认情况下,对于非调试构建,该值为
ON
。要使用的 Protocol Buffers 包。
protobuf_type
可以是以下值之一bundled
:使用与发行版捆绑的包。这是默认值。可以选择使用INSTALL_PRIV_LIBDIR
修改动态 Protobuf 库目录。system
:使用系统上安装的包。
其他值将被忽略,并回退到
bundled
。是否要构建快速开发周期插件。如果启用,则会在构建树中创建一个名为
rapid
的目录,其中包含这些插件。如果禁用,则不会在构建树中创建rapid
目录。默认值为ON
,除非从源代码树中删除了rapid
目录,在这种情况下,默认值将变为OFF
。-DWITH_RAPIDJSON=
rapidjson_type
要包含的 RapidJSON 库支持类型。
rapidjson_type
可以是以下值之一bundled
:使用与发行版捆绑的 RapidJSON 库。这是默认值。system
:使用系统 RapidJSON 库。需要 1.1.0 或更高版本。
是否构建 MySQL 路由器。默认值为
ON
。-DWITH_SSL={
|ssl_type
path_name
}为了支持加密连接、随机数生成熵和其他加密相关操作,MySQL 必须使用 SSL 库构建。此选项指定要使用的 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
的同义词。openssl
:使用备用 OpenSSL 系统包,例如 EL7 上的version
openssl11
,或 EL8 上的openssl3
(或openssl3-fips
)。身份验证插件(如 LDAP 和 Kerberos)被禁用,因为它们不支持这些替代版本的 OpenSSL。
path_name
是要使用的 OpenSSL 安装的路径名。这可能比使用ssl_type
值system
更可取,因为它可以防止 CMake 检测和使用系统上安装的较旧或不正确的 OpenSSL 版本。(另一种允许的执行相同操作的方法是将WITH_SSL
设置为system
,并将CMAKE_PREFIX_PATH
选项设置为path_name
。)
有关配置 SSL 库的更多信息,请参阅 第 2.8.6 节,“配置 SSL 库支持”。
启用对服务器中的
SHOW PARSE_TREE
的支持,仅用于开发和调试。不用于发布版本,也不在生产环境中支持。是否启用安装 systemd 支持文件。默认情况下,此选项被禁用。启用后,会安装 systemd 支持文件,并且不会安装 mysqld_safe 等脚本以及 System V 初始化脚本。在不支持 systemd 的平台上,启用
WITH_SYSTEMD
会导致 CMake 出现错误。当服务器使用此选项构建时,MySQL 会将所有 systemd 消息包含在服务器的错误日志中(请参阅 第 7.4.2 节,“错误日志”)。
有关使用 systemd 的更多信息,请参阅 第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”。该部分还包括有关指定在
[mysqld_safe]
选项组中指定的其他选项的信息。由于在使用 systemd 时不会安装 mysqld_safe,因此必须以其他方式指定这些选项。此选项充当 “总括” 选项,用于设置以下任何未明确设置的 CMake 选项的
system
值:WITH_CURL
、WITH_EDITLINE
、WITH_ICU
、WITH_LIBEVENT
、WITH_LZ4
、WITH_LZMA
、WITH_PROTOBUF
、WITH_RE2
、WITH_SSL
、WITH_ZLIB
、WITH_ZSTD
。是否生成其他 systemd 调试信息,适用于使用 systemd 运行 MySQL 的平台。默认值为
OFF
。是否链接
-ltcmalloc
。如果启用,内置的malloc()
、calloc()
、realloc()
和free()
例程将被禁用。默认值为OFF
。源代码中包含一个
tcmalloc
库;您可以通过将此选项设置为BUNDLED
来使构建使用捆绑版本。BUNDLED
仅在 Linux 系统上受支持。WITH_TCMALLOC
和WITH_JEMALLOC
是互斥的。是否构建测试协议跟踪客户端插件(请参阅 使用测试协议跟踪插件)。默认情况下,此选项被禁用。启用此选项不会产生任何影响,除非启用
WITH_CLIENT_PROTOCOL_TRACING
选项。如果 MySQL 配置为同时启用这两个选项,则libmysqlclient
客户端库将内置测试协议跟踪插件,并且所有标准 MySQL 客户端都会加载该插件。但是,即使启用测试插件,默认情况下它也不起作用。对插件的控制是通过环境变量提供的;请参阅 使用测试协议跟踪插件。注意如果您想使用自己的协议跟踪插件,请不要启用
WITH_TEST_TRACE_PLUGIN
选项,因为一次只能加载一个此类插件,并且尝试加载第二个插件会导致错误。如果您已经使用启用的测试协议跟踪插件构建了 MySQL 以查看它的工作原理,则必须在使用自己的插件之前重新构建 MySQL,而无需启用它。有关编写跟踪插件的信息,请参阅 编写协议跟踪插件。
是否启用线程安全检查器,适用于支持它的编译器。默认值为关闭。
是否启用未定义行为安全检查器,适用于支持它的编译器。默认值为关闭。
如果启用,则使用单元测试编译 MySQL。默认值为
ON
,除非未编译服务器。启用 unixODBC 支持,用于 Connector/ODBC。
是否编译 Valgrind 头文件,这些文件将 Valgrind API 公开给 MySQL 代码。默认值为
OFF
。要生成一个 Valgrind 感知的调试版本,
-DWITH_VALGRIND=1
通常与-DWITH_DEBUG=1
结合使用。请参阅 构建调试配置。某些功能要求服务器使用压缩库支持构建,例如
COMPRESS()
和UNCOMPRESS()
函数,以及客户端/服务器协议的压缩。WITH_ZLIB
选项指示zlib
支持的来源支持的
zlib
的最低版本是 1.2.13。bundled
:使用与分发捆绑的zlib
库。这是默认值。system
:使用系统zlib
库。
使用
zstd
算法进行连接压缩(请参阅 第 6.2.8 节,“连接压缩控制”)要求服务器使用zstd
库支持构建。WITH_ZSTD
选项指示zstd
支持的来源bundled
:使用与分发捆绑的zstd
库。这是默认值。system
:使用系统zstd
库。
C 编译器的标志。
C++ 编译器的标志。
-DWITH_DEFAULT_COMPILER_OPTIONS=
bool
是否使用来自
cmake/build_configurations/compiler_options.cmake
的标志。注意所有优化标志都经过 MySQL 构建团队的精心选择和测试。覆盖它们可能会导致意外的结果,这样做需要您自担风险。
-DOPTIMIZE_SANITIZER_BUILDS=
bool
是否将
-O1 -fno-inline
添加到安全检查器构建中。默认值为ON
。
要指定您自己的 C 和 C++ 编译器标志,对于不影响优化的标志,请使用 CMAKE_C_FLAGS
和 CMAKE_CXX_FLAGS
CMake 选项。
在提供您自己的编译器标志时,您可能还想指定 CMAKE_BUILD_TYPE
。
例如,要在 64 位 Linux 机器上创建 32 位发布版本,请执行以下操作
$> mkdir build
$> cd build
$> cmake .. -DCMAKE_C_FLAGS=-m32 \
-DCMAKE_CXX_FLAGS=-m32 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
如果您设置了影响优化的标志(-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
选项。例如,要在 Linux 上使用 -O3
以及调试符号进行编译,请执行以下操作
$> cmake .. -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O3 -g" \
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g"
要使用 NDB Cluster 支持编译 MySQL,可以使用 -DWITH_NDB
,这将导致构建包含 NDB 存储引擎和所有 NDB 程序。此选项默认启用。要防止构建 NDB 存储引擎插件,请使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF
。构建的其他方面可以使用本节中列出的其他选项进行控制。
以下选项适用于使用 NDB Cluster 支持构建 MySQL 源代码。
-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}
控制是否使用
ndbclient
静态地(OFF
)或动态地(ON
)链接 NDB 实用程序(如 ndb_drop_table);OFF
(静态链接)是默认值。通常在构建这些实用程序时使用静态链接,以避免出现与LD_LIBRARY_PATH
相关的問題,或者当安装了多个版本的ndbclient
时。此选项旨在创建 Docker 镜像,以及可能的其他情况下,其中目标环境受到精确控制,并且需要减小镜像大小。设置用于构建 MySQL NDB Cluster Connector for Java 的类路径。默认情况下为空。如果使用
-DWITH_NDB_JAVA=OFF
,则忽略此选项。在
NDB
内核中启用错误注入。仅用于测试;不适合用于构建生产二进制文件。默认值为OFF
。构建 MySQL NDB Cluster;构建 NDB 插件和所有 NDB Cluster 程序。
-DWITH_NDBAPI_EXAMPLES={ON|OFF}
在
storage/ndb/ndbapi-examples/
中构建 NDB API 示例程序。有关这些示例程序的信息,请参见 NDB API 示例。-DWITH_NDBCLUSTER_STORAGE_ENGINE={ON|OFF}
控制(仅)构建中是否包含
ndbcluster
插件;WITH_NDB
会自动启用此选项,因此建议您使用WITH_NDB
代替。-DWITH_NDBCLUSTER={ON|OFF}
(已弃用)构建和链接对
NDB
存储引擎的支持,该引擎位于 mysqld 中。此选项已弃用,并且可能会最终被删除;请改用
WITH_NDB
。构建多线程数据节点可执行文件 ndbmtd。默认值为
ON
。启用构建 NDB Cluster 二进制文件的调试版本。默认情况下为
OFF
。启用使用 Java 支持构建 NDB Cluster,包括对 ClusterJ 的支持(请参见 MySQL NDB Cluster Connector for Java)。
此选项默认情况下为
ON
。如果您不希望使用 Java 支持编译 NDB Cluster,则必须通过在运行 CMake 时指定-DWITH_NDB_JAVA=OFF
来显式禁用它。否则,如果找不到 Java,构建配置将失败。导致构建的 NDB Cluster 管理服务器(ndb_mgmd)默认使用此
port
。如果未设置此选项,则生成的管理服务器尝试默认使用端口 1186。如果启用,则包含一组 NDB API 测试程序。默认值为
OFF
。-DWITH_NDB_TLS_SEARCH_PATH=
path
设置 ndb_sign_keys 和其他
NDB
程序为 TLS 证书和密钥文件搜索的默认路径。Windows 平台的默认值为
$HOMEDIR/ndb-tls
;对于其他平台(如 Linux),默认值为$HOME/ndb-tls
。