CMake 程序提供了对如何配置 MySQL 源代码发行版的强大控制。通常,您可以使用 CMake 命令行上的选项来完成此操作。有关 CMake 支持的选项的信息,请在顶级源代码目录中运行以下任一命令
$> cmake . -LH
$> ccmake .您还可以使用某些环境变量来影响 CMake。请参见 第 6.9 节,“环境变量”。
对于布尔选项,可以使用值 1 或 ON 来启用选项,或者使用 0 或 OFF 来禁用选项。
许多选项配置了编译时默认值,这些默认值可以在服务器启动时被覆盖。例如,用于配置默认安装基本目录位置、TCP/IP 端口号和 Unix 套接字文件的 CMAKE_INSTALL_PREFIX、MYSQL_TCP_PORT 和 MYSQL_UNIX_ADDR 选项,可以在服务器启动时使用 mysqld 的 --basedir、--port 和 --socket 选项进行更改。在适用的情况下,配置选项描述指示了相应的 mysqld 启动选项。
以下部分提供了有关 CMake 选项的更多信息。
下表显示了可用的 CMake 选项。在 默认值 列中,PREFIX 代表 CMAKE_INSTALL_PREFIX 选项的值,该选项指定安装基本目录。此值用作多个安装子目录的父位置。
表 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 |
是否生成配置文件引导的优化数据 | OFF |
FPROFILE_USE |
是否使用配置文件引导的优化数据 | 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 |
信息文件目录 | 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 |
是否优化消毒剂构建 | 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 |
构建适用于 Java 的 MySQL 集群连接器时使用的类路径。默认为空字符串。 | |
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 |
是否在不使用 AddressSanitizer 的情况下运行 LeakSanitizer | 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 集群,包括 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 集群中受支持。 | ON |
WITH_NDB_PORT |
使用此选项构建的管理服务器使用的默认端口。如果构建它时未使用此选项,则管理服务器的默认端口为 1186。 | [无] |
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 |
要使用的协议缓冲区包 | bundled |
WITH_RAPID |
是否构建快速开发生命周期插件 | ON |
WITH_RAPIDJSON |
RapidJSON 支持的类型 | bundled |
WITH_ROUTER |
是否构建 MySQL 路由器 | 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 |
启用未定义行为消毒剂 | 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文件的位置。安装头文件的位置。
安装信息文件的位置。
选择预定义的安装布局。
STANDALONE:与用于.tar.gz和.zip软件包的布局相同。这是默认值。RPM:类似于 RPM 软件包的布局。SVR4:Solaris 软件包布局。DEB:DEB 软件包布局(实验性)。
您可以选择预定义的布局,但通过指定其他选项来修改各个组件的安装位置。例如:
cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/dataINSTALL_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_namesecure_file_priv系统变量的默认值。默认值是平台特定的,并且取决于INSTALL_LAYOUTCMake 选项的值;请参阅 第 7.1.8 节“服务器系统变量” 中对secure_file_priv系统变量的描述。安装
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_namefile_name是文件的完整路径名。当 MySQL 由 systemd 管理时,要在其中创建 PID 文件的目录的名称。默认值为
/var/run/mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。除非启用了
WITH_SYSTEMD,否则将忽略此选项。当 MySQL 由 systemd 管理时要使用的 MySQL 服务的名称。默认值为
mysqld;这可能会根据INSTALL_LAYOUT值隐式更改。除非启用了
WITH_SYSTEMD,否则将忽略此选项。用于
tmpdir系统变量的默认位置。如果未指定,则该值默认为<stdio.h>中的P_tmpdir。
存储引擎作为插件构建。您可以将插件构建为静态模块(编译到服务器中)或动态模块(构建为动态库,必须使用 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 集群的 MySQL,请使用 WITH_NDB 选项。
无法在不支持性能架构的情况下进行编译。如果希望在没有特定类型的检测的情况下进行编译,可以使用以下 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。是否生成配置文件引导优化 (PGO) 数据。此选项可用于使用 GCC 进行 PGO 实验。有关使用
FPROFILE_GENERATE和FPROFILE_USE的信息,请参阅 MySQL 源代码发行版中的cmake/fprofile.cmake。这些选项已在 GCC 8 和 9 上进行了测试。是否使用配置文件引导优化 (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可用于为 Clang 启用(默认)或显式禁用 LLVM lld 链接器。在 MySQL 8.3 中,USE_LD_LLD已被移除。是否在 Windows 上禁用函数内联。默认值为
OFF(启用内联)。设置 Ant 的路径,这是构建 GCS Java 包装器时所需的。将
WITH_ANT设置为保存 Ant tarball 或解压缩存档的目录的路径。如果未设置WITH_ANT,或者设置为特殊值system,则构建过程假定$PATH中存在二进制文件ant。是否为支持它的编译器启用 AddressSanitizer。默认值为
OFF。是否启用 AddressSanitizer
-fsanitize-address-use-after-scopeClang 标志以进行范围后使用检测。默认值为 off。要使用此选项,还必须启用-DWITH_ASAN。-DWITH_AUTHENTICATION_CLIENT_PLUGINS=bool如果构建了任何相应的服务器身份验证插件,则会自动启用此选项。因此,它的值取决于其他 CMake 选项,不应显式设置。
-DWITH_AUTHENTICATION_LDAP=bool如果无法构建 LDAP 身份验证插件,是否报告错误
如果禁用此选项(默认),则会在找到所需的头文件和库时构建 LDAP 插件。如果找不到,CMake 会显示一条相关说明。
如果启用此选项,则找不到所需的头文件和库会导致 CMake 产生错误,从而阻止服务器构建。
-DWITH_AUTHENTICATION_PAM=bool是否为包含此插件的源代码树构建 PAM 身份验证插件。(请参阅 第 8.4.1.5 节,“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,其中NN是大于 0 的超时值。(默认值为 0,表示禁用调试同步。)N将成为各个同步点的默认超时。使用
WITH_DEBUG选项编译调试支持时,InnoDB存储引擎的同步调试检查可用。有关调试同步工具以及如何使用同步点的说明,请参阅 MySQL 内部结构:测试同步。
要使用的
libedit/editline库。允许的值为bundled(默认值)和system。-DWITH_ICU={icu_type|path_name}MySQL 使用国际 Unicode 组件 (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或它未导出所需的功能,则使用标准内存函数。INFORMATION 级别的日志消息会记录是否找到并使用了 jemalloc。此选项对 Windows 的官方 MySQL 二进制文件启用。
要使用的
libevent库。允许的值为bundled(默认值)和system。如果指定了system并且找不到系统libevent库,则无论如何都会发生错误,并且不会使用捆绑的libevent。X Plugin 和 MySQL Router 需要
libevent库。是否包含
libwrap(TCP 包装器)支持。是否启用 LOCK_ORDER 工具。默认情况下,此选项处于禁用状态,并且服务器构建不包含任何工具。如果启用了工具,则 LOCK_ORDER 工具可用,并且可以按照 第 7.9.3 节“LOCK_ORDER 工具” 中的描述使用。
注意启用了
WITH_LOCK_ORDER选项后,MySQL 构建需要 flex 程序。是否在没有 AddressSanitizer 的情况下运行 LeakSanitizer。默认值为
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。默认值为 off。
要使此选项在启用时生效,链接到 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 Router。默认值为
ON。-DWITH_SSL={|ssl_typepath_name}为了支持加密连接、随机数生成的熵以及其他与加密相关的操作,必须使用 SSL 库构建 MySQL。此选项指定要使用的 SSL 库。
ssl_type可以是以下值之一system:使用系统 OpenSSL 库。这是默认值。在 macOS 和 Windows 上,使用
system会将 MySQL 配置为像使用指向手动安装的 OpenSSL 库的path_name调用 CMake 一样进行构建。这是因为它们没有系统 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 上的versionopenssl11或 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 运行 MySQL 的平台,是否生成额外的 systemd 调试信息。默认值为
OFF。是否与
-ltcmalloc链接。如果启用,则禁用内置的malloc()、calloc()、realloc()和free()例程。默认值为OFF。从 MySQL 8.4.1 开始,源代码中包含一个
tcmalloc库;您可以通过将此选项设置为BUNDLED来使构建使用捆绑版本。BUNDLED仅在 Linux 系统上受支持。WITH_TCMALLOC和WITH_JEMALLOC互斥。是否构建测试协议跟踪客户端插件(请参阅使用测试协议跟踪插件)。默认情况下,此选项处于禁用状态。启用此选项无效,除非启用了
WITH_CLIENT_PROTOCOL_TRACING选项。如果 MySQL 配置为同时启用这两个选项,则libmysqlclient客户端库将使用内置的测试协议跟踪插件构建,并且所有标准 MySQL 客户端都将加载该插件。但是,即使启用了测试插件,默认情况下它也没有效果。可以使用环境变量控制插件;请参阅使用测试协议跟踪插件。注意如果您想使用自己的协议跟踪插件,请不要启用
WITH_TEST_TRACE_PLUGIN选项,因为一次只能加载一个此类插件,并且尝试加载第二个插件时会出现错误。如果您已经构建了启用了测试协议跟踪插件的 MySQL 以了解其工作原理,则必须在使用自己的插件之前在不使用该插件的情况下重新构建 MySQL。有关编写跟踪插件的信息,请参阅编写协议跟踪插件。
对于支持它的编译器,是否启用 ThreadSanitizer。默认值为 off。
对于支持它的编译器,是否启用未定义行为清理器。默认值为 off。
如果启用,则使用单元测试编译 MySQL。默认值为
ON,除非未编译服务器。为 Connector/ODBC 启用 unixODBC 支持。
是否编译 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),则必须设置 numberCMAKE_C_FLAGS_ 和/或 build_typeCMAKE_CXX_FLAGS_ 选项,其中 build_typebuild_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 集群,可以使用 -DWITH_NDB,这将导致构建包含 NDB 存储引擎和所有 NDB 程序。默认情况下启用此选项。要阻止构建 NDB 存储引擎插件,请使用 -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF。可以使用本节中列出的其他选项来控制构建的其他方面。
以下选项适用于使用 NDB 集群支持构建 MySQL 源代码时。
-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}控制 NDB 实用程序(例如 ndb_drop_table)是静态链接
ndbclient(OFF)还是动态链接(ON);默认值为OFF(静态链接)。通常,在构建这些实用程序时使用静态链接,以避免出现LD_LIBRARY_PATH问题,或者在安装了多个版本的ndbclient时。此选项旨在创建 Docker 映像以及可能需要精确控制目标环境并希望减小映像大小的其他情况。设置用于构建 MySQL NDB 集群 Java 连接器的类路径。默认值为空。如果使用了
-DWITH_NDB_JAVA=OFF,则忽略此选项。在
NDB内核中启用错误注入。仅用于测试;不适用于构建生产二进制文件。默认值为OFF。构建 MySQL NDB 集群;构建 NDB 插件和所有 NDB 集群程序。
-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}(已弃用)此选项已弃用,最终将被删除;请改用
WITH_NDB。构建多线程数据节点可执行文件 ndbmtd。默认值为
ON。启用构建 NDB 集群二进制文件的调试版本。默认情况下为
OFF。启用使用 Java 支持构建 NDB 集群,包括对 ClusterJ 的支持(请参见 适用于 Java 的 MySQL NDB 集群连接器)。
默认情况下,此选项为
ON。如果您不希望使用 Java 支持编译 NDB 集群,则必须在运行 CMake 时通过指定-DWITH_NDB_JAVA=OFF来显式禁用它。否则,如果找不到 Java,则构建配置将失败。导致构建的 NDB 集群管理服务器(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。