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/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 选项的值;请参阅 第 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_name
file_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-scope
Clang 标志以进行范围后使用检测。默认值为 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,其中N
N
是大于 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_type
path_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 上的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 运行 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
),则必须设置 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 集群,可以使用 -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
。