使用 CMake 程序可以对 MySQL 源代码分布进行大量的控制。通常,您可以使用 CMake 命令行选项来实现这一点。有关 CMake 支持的选项的信息,请在顶级源目录中运行以下命令之一:
$> cmake . -LH
$> ccmake .
您也可以使用某些环境变量来影响 CMake。请参阅 第 6.9 节,“环境变量”。
对于布尔选项,值可以指定为 1
或 ON
以启用选项,或者指定为 0
或 OFF
以禁用选项。
许多选项配置编译时默认值,可以在服务器启动时被覆盖。例如,CMAKE_INSTALL_PREFIX
、MYSQL_TCP_PORT
和 MYSQL_UNIX_ADDR
选项配置默认安装基目录位置、TCP/IP 端口号和 Unix 套接字文件,可以在服务器启动时使用 --basedir
、--port
和 --socket
选项来更改 mysqld。
以下部分提供了更多关于 CMake 选项的信息。
以下表格显示了可用的 CMake 选项。在 Default
列中,PREFIX
代表 CMAKE_INSTALL_PREFIX
选项的值,该选项指定了安装基目录的位置。该值用作多个安装子目录的父目录。
表 2.13 MySQL 源代码配置选项参考(CMake)
Formats | Description | Default |
---|---|---|
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 |
排除性能模式条件instrumentation | OFF |
DISABLE_PSI_DATA_LOCK |
排除性能模式数据锁instrumentation | OFF |
DISABLE_PSI_ERROR |
排除性能模式服务器错误instrumentation | OFF |
DISABLE_PSI_FILE |
排除性能模式文件instrumentation | OFF |
DISABLE_PSI_IDLE |
排除性能模式空闲instrumentation | OFF |
DISABLE_PSI_MEMORY |
排除性能模式内存instrumentation | OFF |
DISABLE_PSI_METADATA |
排除性能模式元数据instrumentation | OFF |
DISABLE_PSI_MUTEX |
排除性能模式互斥锁instrumentation | OFF |
DISABLE_PSI_PS |
排除性能模式预备语句 | OFF |
DISABLE_PSI_RWLOCK |
排除性能模式读写锁instrumentation | OFF |
DISABLE_PSI_SOCKET |
排除性能模式套接字instrumentation | OFF |
DISABLE_PSI_SP |
排除性能模式存储程序instrumentation | OFF |
DISABLE_PSI_STAGE |
排除性能模式阶段instrumentation | OFF |
DISABLE_PSI_STATEMENT |
排除性能模式语句instrumentation | OFF |
DISABLE_PSI_STATEMENT_DIGEST |
排除性能模式语句摘要instrumentation | OFF |
DISABLE_PSI_TABLE |
排除性能模式表instrumentation | OFF |
DISABLE_PSI_THREAD |
排除性能模式线程instrumentation | OFF |
DISABLE_PSI_TRANSACTION |
排除性能模式事务instrumentation | OFF |
ENABLED_LOCAL_INFILE |
是否启用 LOCAL for LOAD DATA | OFF |
ENABLED_PROFILING |
是否启用查询 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 指导优化数据 | OFF |
FPROFILE_USE |
是否使用 profile 指导优化数据 | 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_MYSQLKEYRINGDIR |
keyring_file 插件数据文件目录 | 平台特定 |
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 |
MySQL 服务名称 under systemd | mysqld |
TMPDIR |
tmpdir 默认值 | |
WIN_DEBUG_NO_INLINE |
是否禁用函数内联 | OFF |
WITHOUT_SERVER |
不要构建服务器 | OFF |
WITHOUT_xxx_STORAGE_ENGINE |
从构建中排除存储引擎 xxx | |
WITH_ANT |
Ant 的路径用于构建 GCS Java 包装器 | |
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 的 Classpath。默认为空字符串。 |
|
WITH_CLIENT_PROTOCOL_TRACING |
构建客户端协议跟踪框架 | ON |
WITH_CURL |
curl 库的位置 | |
WITH_DEBUG |
是否包括调试支持 | OFF |
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用默认编译器选项 | ON |
WITH_DEVELOPER_ENTITLEMENTS |
是否在 macOS 上将 'get-task-allow' 权限添加到所有可执行文件中,以便在服务器意外停止时生成核心转储 | OFF |
WITH_EDITLINE |
使用哪个 libedit/editline 库 | bundled |
WITH_ERROR_INSERT |
在 NDB 存储引擎中启用错误注入。不要用于生产环境。 | OFF |
WITH_FIDO |
FIDO 库支持类型 | bundled |
WITH_ICU |
ICU 支持类型 | bundled |
WITH_INNODB_EXTRA_DEBUG |
是否包括 InnoDB 的额外调试支持 | OFF |
WITH_JEMALLOC |
是否链接到 -ljemalloc | OFF |
WITH_KEYRING_TEST |
构建密钥环测试程序 | OFF |
WITH_LD |
是否使用 LLVM lld 或 mold 链接器 |
|
WITH_LIBEVENT |
使用哪个 libevent 库 | bundled |
WITH_LIBWRAP |
是否包括 libwrap (TCP wrappers) 支持 | 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 | OFF |
WITH_NDBAPI_EXAMPLES |
构建 API 示例程序 | OFF |
WITH_NDBCLUSTER |
构建 NDB 存储引擎 | 关闭 |
WITH_NDBCLUSTER_STORAGE_ENGINE |
仅供内部使用;在所有情况下可能不工作如预期;用户应该使用WITH_NDBCLUSTER代替 | 开启 |
WITH_NDBMTD |
构建多线程数据节点。 | 开启 |
WITH_NDB_DEBUG |
生成调试版本用于测试或故障排除。 | 关闭 |
WITH_NDB_JAVA |
启用Java和ClusterJ支持。默认启用,仅在MySQL Cluster中支持。 | 开启 |
WITH_NDB_PORT |
使用该选项构建的管理服务器的默认端口。如果未使用该选项构建,则管理服务器的默认端口为1186。 | [none] |
WITH_NDB_TEST |
包括NDB API测试程序。 | 关闭 |
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 |
是否构建快速开发周期插件 | 开启 |
WITH_RAPIDJSON |
RapidJSON支持类型 | bundled |
WITH_ROUTER |
是否构建MySQL Router | 开启 |
WITH_SHOW_PARSE_TREE |
SHOW PARSE_TREE调试语句支持 | |
WITH_SSL |
SSL支持类型 | system |
WITH_SYSTEMD |
启用systemd支持文件的安装 | 关闭 |
WITH_SYSTEMD_DEBUG |
启用附加systemd调试信息 | 关闭 |
WITH_SYSTEM_LIBS |
设置未明确设置的库选项的系统值 | 关闭 |
WITH_TCMALLOC |
是否链接-ltcalloc | 关闭 |
WITH_TEST_TRACE_PLUGIN |
构建测试协议跟踪插件 | 关闭 |
WITH_TSAN |
启用ThreadSanitizer | 关闭 |
WITH_UBSAN |
启用Undefined Behavior Sanitizer | 关闭 |
WITH_UNIT_TESTS |
使用单元测试编译MySQL | 开启 |
WITH_UNIXODBC |
启用unixODBC支持 | 关闭 |
WITH_VALGRIND |
是否编译Valgrind头文件 | 关闭 |
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
以禁用该功能。该选项对平台以外的其他平台无效。
-
-DBUNDLE_RUNTIME_LIBRARIES=
bool
是否将运行时库与Windows的服务器MSI和Zip包捆绑。
-
要生成的构建类型:
-
RelWithDebInfo
:启用优化并生成调试信息。这是默认的MySQL构建类型。 -
Release
:启用优化,但省略调试信息以减少构建大小。 -
调试
: 禁用优化和生成调试信息。该构建类型也用于启用WITH_DEBUG
选项时。那就是说,-DWITH_DEBUG=1
具有与-DCMAKE_BUILD_TYPE=Debug
相同的效果。
选项值
None
和MinSizeRel
不受支持。 -
-
-DCPACK_MONOLITHIC_INSTALL=
bool
该选项影响 make package 操作是否生成多个安装包文件或单个文件。如果禁用,操作生成多个安装包文件,这可能有助于仅安装 MySQL 安装的一部分。如果启用,它生成单个文件以安装所有内容。
-
定义是否强制进行源代码内构建。建议使用外部构建,因为它们允许多个构建来自同一个源,并且可以快速清理通过删除构建目录。要强制进行源代码内构建,请使用 CMake with
-DFORCE_INSOURCE_BUILD=ON
。 -
定义是否启用颜色化编译器输出 для 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
The
INSTALL_LAYOUT
值确定了secure_file_priv
、keyring_encrypted_file_data
和keyring_file_data
系统变量的默认值。请参阅这些变量在 第 7.1.8 节,“服务器系统变量” 和 第 8.4.4.19 节,“Keyring 系统变量” 中的描述。 -
-
库文件的安装位置。
-
手册页的安装位置。
-
-DINSTALL_MYSQLKEYRINGDIR=
dir_path
默认目录用于存储
keyring_file
插件数据文件。默认值取决于INSTALL_LAYOUT
CMake 选项的值;请参阅keyring_file_data
系统变量在 第 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 中,explicitly 设置了完整的目录路径,因为目标目标是已知的。对于 tarball 安装,需要使用工具 like 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
的默认位置。如果未指定,默认值为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
选项。
无法在不支持性能模式的情况下编译。如果想要在不包含特定类型的仪器的情况下编译,可以使用以下 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 链接器或 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
字符集。字符集名称
可以是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
能力。因此,客户端没有明确安排的默认情况下,LOCAL
能力将根据ENABLED_LOCAL_INFILE
设置在 MySQL 构建时启用或禁用。默认情况下,MySQL 二进制发行版中的客户端库是与
ENABLED_LOCAL_INFILE
禁用编译的。如果您从源代码编译 MySQL,可以根据客户端是否应该禁用或启用LOCAL
能力来配置ENABLED_LOCAL_INFILE
。ENABLED_LOCAL_INFILE
控制客户端LOCAL
能力的默认值。对于服务器,local_infile
系统变量控制服务器端LOCAL
能力。要明确地使服务器拒绝或允许LOAD DATA LOCAL
语句(无论客户端程序和库在构建时或运行时如何配置),请使用 mysqld 启动时禁用或启用--local-infile
。local_infile
也可以在运行时设置。请参阅 第 8.1.6 节,“LOAD DATA LOCAL 安全注意事项”。 -
是否启用查询 profiling 代码(用于
SHOW PROFILE
和SHOW PROFILES
语句)。 -
-DFORCE_UNSUPPORTED_COMPILER=
bool
默认情况下,CMake 检查最低版本的 支持的编译器;要禁用此检查,请使用
-DFORCE_UNSUPPORTED_COMPILER=ON
。 -
-DSHOW_SUPPRESSED_COMPILER_WARNINGS=
bool
显示隐藏的编译器警告,不会因
-Werror
而失败。默认为OFF
。 -
是否生成配置指南优化(PGO)数据。此选项用于与 GCC 一起实验 PGO。请参阅 MySQL 源代码分布中的
cmake/fprofile.cmake
,了解使用FPROFILE_GENERATE
和FPROFILE_USE
的信息。这些选项已经与 GCC 8 和 9 进行了测试。 -
是否使用配置文件优化(PGO)数据。这项选项可用于与 GCC 一起实验 PGO。请参阅 MySQL 源代码分发中的
cmake/fprofile.cmake
文件,以获取有关使用FPROFILE_GENERATE
和FPROFILE_USE
的信息。这些选项已经与 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 互斥代替条件变量来调度等待线程。
-
-
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 Internals: 优化器跟踪。
-
对于 Linux 系统上的构建, 此选项控制是否采取额外的措施来创建一个独立于构建位置和时间的构建结果。
此选项默认为
ON
,用于RelWithDebInfo
构建。 -
CMake 默认使用标准链接器。可选地传入
lld
或mold
以指定备用链接器。mold 必须是版本 2 或更高版本。此选项可用于 Linux 基础系统以外的其他系统,Enterprise Linux 总是使用 ld 链接器。
Note以前,选项
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 标志,以检测用后范围。默认为关闭。要使用此选项,-DWITH_ASAN
也必须启用。 -
-DWITH_AUTHENTICATION_CLIENT_PLUGINS=
布尔值
此选项将自动启用,如果任何相应的服务器身份验证插件被构建。因此,它的值取决于其他 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"
选项。这将导致 Bison 解析器将解析器跟踪写入服务器的标准错误输出。通常,这个输出将被写入错误日志。InnoDB 存储引擎的同步调试检查在
UNIV_DEBUG
下定义,并且在使用WITH_DEBUG
选项编译调试支持时可用。当调试支持被编译时,innodb_sync_debug
配置选项可以用来启用或禁用 InnoDB 同步调试检查。启用
WITH_DEBUG
也启用 Debug Sync。这是一个用于测试和调试的设施。当编译时启用时,默认情况下 Debug Sync 在运行时被禁用。要启用它,请使用 mysqld 启动选项--debug-sync-timeout=
,其中N
N
是一个大于 0 的超时值。(默认值为 0,禁用 Debug Sync。)N
将成为单个同步点的默认超时值。同步调试检查对于
InnoDB
存储引擎在编译时启用调试支持时可用,使用WITH_DEBUG
选项。有关 Debug Sync 设施的描述和如何使用同步点,请参阅 MySQL Internals: Test Synchronization。
-
要使用的
libedit
/editline
库。允许的值是bundled
(默认)和system
。 -
身份验证插件
authentication_fido
使用 FIDO 库(见 第 8.4.1.12 节,“FIDO 可插拔身份验证”)。WITH_FIDO
选项指示 FIDO 支持的来源:-
bundled
: 使用随发行版捆绑的 FIDO 库。这是默认值。MySQL 包括
fido2
版本 1.8.0。 -
system
: 使用系统 FIDO 库。
WITH_FIDO
如果所有身份验证插件都禁用,则禁用(设置为none
)。 -
-
-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
或不导出所需的函数,将使用标准内存函数。信息级日志消息记录了是否找到并使用了 jemalloc。官方 MySQL 二进制文件为 Windows 启用了该选项。
-
是否构建伴随
keyring_file
插件的测试程序。默认值为OFF
。测试文件源代码位于plugin/keyring/keyring-test
目录中。 -
使用哪个
libevent
库。允许的值为bundled
(默认) 和system
。如果指定system
且找不到系统libevent
库,将发生错误,而不使用捆绑的libevent
。libevent
库是InnoDB
memcached、X 插件和 MySQL 路由器所需的。 -
是否包括
libwrap
(TCP 包装器)支持。 -
是否启用 LOCK_ORDER 工具。默认情况下,该选项禁用,服务器构建不包含工具。如果启用工具,LOCK_ORDER 工具将可用,如 第 7.9.3 节“LOCK_ORDER 工具”所述。
Note启用
WITH_LOCK_ORDER
选项后,MySQL 构建需要 flex 程序。 -
是否运行 LeakSanitizer,不包括 AddressSanitizer。默认值为
OFF
。 -
是否启用链接时优化器,如果编译器支持该功能。默认值为
OFF
,除非FPROFILE_USE
启用。 -
该
WITH_LZ4
选项指示zlib
支持的来源:-
bundled
: 使用捆绑的lz4
库。这是默认值。 -
system
: 使用系统lz4
库。如果WITH_LZ4
设置为该值,则不会构建 lz4_decompress 实用程序。在这种情况下,可以使用系统 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 内存泄露跟踪。默认情况下关闭。
-
是否启用 MSVC 代码分析。默认情况下启用。
-
是否构建 X 插件支持。默认情况下启用。请参阅 第 22 章,使用 MySQL 作为文档存储。
-
明确设置 NUMA 内存分配策略。CMake 根据当前平台是否支持 NUMA 设置默认
WITH_NUMA
值。对于不支持 NUMA 的平台,CMake 的行为如下:-
没有 NUMA 选项(正常情况),CMake 继续正常,仅产生以下警告:NUMA 库缺失或所需版本不可用。
-
使用
-DWITH_NUMA=ON
,CMake 中止并显示以下错误:NUMA 库缺失或所需版本不可用。
-
-
对于 RPM 和 Debian 软件包通常使用的标志,是否将其添加到独立构建的平台上。默认情况下,对于非调试构建启用。
-
要使用的 Protocol Buffers 包。
protobuf_type
可以是以下值之一:-
bundled
:使用与发行版捆绑的包。这是默认值。可选地使用INSTALL_PRIV_LIBDIR
修改动态 Protobuf 库目录。 -
system
:使用系统上安装的包。
其他值将被忽略,回退到
bundled
。 -
-
是否构建快速开发周期插件。当启用时,在构建树中创建一个
rapid
目录,包含这些插件。当禁用时,不会在构建树中创建rapid
目录。默认情况下启用,除非从源树中删除了rapid
目录,在这种情况下默认变为禁用。 -
-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 库。
-
在服务器中启用
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]
选项组中指定选项的信息,因为 mysqld_safe 在使用 systemd 时不安装,因此这些选项必须以其他方式指定。 -
该选项充当 “伞” 选项,以设置以下 CMake 选项的
system
值,这些选项未明确设置:WITH_CURL
,WITH_EDITLINE
,WITH_FIDO
,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
。WITH_TCMALLOC
和WITH_JEMALLOC
是互斥的。 -
是否构建测试协议跟踪客户端插件(请参阅 使用测试协议跟踪插件)。默认情况下,该选项被禁用。启用该选项只有在
WITH_CLIENT_PROTOCOL_TRACING
选项启用时才有效。如果 MySQL 配置了这两个选项,libmysqlclient
客户端库将构建测试协议跟踪插件,并且所有标准 MySQL 客户端将加载插件。然而,即使启用了测试插件,默认情况下也没有效果。环境变量控制插件;请参阅 使用测试协议跟踪插件。Note不要 启用
WITH_TEST_TRACE_PLUGIN
选项,如果你想使用自己的协议跟踪插件,因为只能加载一个这样的插件,并且尝试加载第二个插件时会出现错误。如果你已经使用启用了测试协议跟踪插件的 MySQL 来查看它如何工作,那么在使用自己的插件之前,你必须重新构建 MySQL 而不启用它。有关编写跟踪插件的信息,请参阅 编写协议跟踪插件。
-
是否启用 ThreadSanitizer,对于支持它的编译器来说。默认情况下关闭。
-
是否启用未定义行为 Sanitizer,对于支持它的编译器来说。默认情况下关闭。
-
如果启用,编译 MySQL 单元测试。默认情况下启用,除非服务器不被编译。
-
启用 unixODBC 支持,用于 Connector/ODBC。
-
是否编译 Valgrind 头文件,将 Valgrind API 暴露给 MySQL 代码。默认情况下关闭。
要生成 Valgrind 感知调试版本,
-DWITH_VALGRIND=1
通常与-DWITH_DEBUG=1
结合使用。请参阅 构建调试配置。 -
一些功能需要服务器使用压缩库支持,例如
COMPRESS()
和UNCOMPRESS()
函数,以及客户端/服务器协议的压缩。WITH_ZLIB
选项指示zlib
支持的来源:支持的最低
zlib
版本为 1.2.13。-
bundled
: 使用与发行版捆绑的zlib
库。这是默认值。 -
system
: 使用系统zlib
库。如果WITH_ZLIB
设置为此值,那么 zlib_decompress 实用程序将不被构建。在这种情况下,可以使用系统 openssl 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
的标志。Note所有优化标志都是由 MySQL 构建团队精心选择和测试的。覆盖它们可能会导致意外的结果,并且是您自己的风险。
-
-DOPTIMIZE_SANITIZER_BUILDS=
bool
是否将
-O1 -fno-inline
添加到 sanitizer 构建中。默认是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"
以下选项用于在编译 MySQL 源代码时启用 NDB 集群支持。
-
-DNDB_UTILS_LINK_DYNAMIC={ON|OFF}
控制 NDB 实用程序(如 ndb_drop_table)是否与
ndbclient
静态链接 (OFF
) 或动态链接 (ON
); 默认是OFF
(静态链接)。通常在构建这些实用程序时使用静态链接,以避免LD_LIBRARY_PATH
问题,或者当多个版本的ndbclient
安装时。这选项旨在创建 Docker 镜像和可能的其他情况下,目标环境受到精确控制,并且想要减少镜像大小。 -
设置 MySQL NDB 集群 Connector for 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
。 -
该选项已弃用,建议使用
WITH_NDB
。 -
构建多线程数据节点可执行文件 ndbmtd。默认为
ON
。 -
启用构建 NDB 集群调试版本二进制文件。默认为
OFF
。 -
启用构建 NDB 集群的 Java 支持,包括 ClusterJ 支持(请参阅 MySQL NDB 集群 Connector for Java)。
该选项默认为
ON
。如果您不想编译 NDB 集群的 Java 支持,必须明确禁用它,方法是指定-DWITH_NDB_JAVA=OFF
时运行 CMake。否则,如果 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
。