使用Cmake编译Mysql5.5

本文提供了一种将MySQL配置从AutoTools转换为CMake的方法,包括命令调用语法、安装布局选项、存储引擎选项、库选项等,并详细说明了如何在CMake中实现这些选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

if (window.showTocToggle) { var tocShowText = "show"; vartocHideText = "hide"; showTocToggle(); } [edit] Introduction

This page shows some common autotools configuration options andhow they map to CMake equivalents. It supplements the CMake page that describeshow to build MySQL with CMake.

[edit] Command Invocation Syntax

The following table shows some common configure invocationsyntax and the equivalent CMake commands. The "." should bereplaced with the path to the top-level directory of the sourcetree if that directory is not your current working directory.

 

configure CommandCMake Command
./configurecmake .
./configure --helpcmake . -LH or ccmake .


To clean out old object files and cached information beforereconfiguring and rebuilding:

Autotools:

make clean
rm config.cache

CMake (Unix):

make clean
rm CMakeCache.txt

CMake (Windows):

devenv MySQL.sln /clean
del CMakeCache.txt
[edit] Installation Layout Options

These options control where to install various MySQLcomponents.

In the following table, the CMAKE_INSTALL_PREFIX value is theinstallation base directory. Many other CMake layout options areinterpreted relative to the prefix and their values are relativepathnames. Their values should not include the prefix.

 

Parameterconfigure OptionCMake OptionCMake Notes
Installation base directory--prefix=/usr-DCMAKE_INSTALL_PREFIX=/usr 
mysqld directory--libexecdir=/usr/sbin-DINSTALL_SBINDIR=sbininterpreted relative to prefix
Data directory--localstatedir=/var/lib/mysql-DMYSQL_DATADIR=/var/lib/mysql 
Config directory (for my.cnf)--sysconfdir=/etc/mysql-DSYSCONFDIR=/etc/mysql 
Plugin directory--with-plugindir=/usr/lib64/mysql/plugin-DINSTALL_PLUGINDIR=lib64/mysql/plugininterpreted relative to prefix
Man page directory--mandir=/usr/share/man-DINSTALL_MANDIR=share/maninterpreted relative to prefix
Shared-data directory--sharedstatedir=/usr/share/mysql-DINSTALL_SHAREDIR=sharethis is where aclocal/mysql.m4 should be installed
Library installation directory--libdir=/usr/lib64/mysql-DINSTALL_LIBDIR=lib64/mysqlinterpreted relative to prefix
Header installation directory--includedir=/usr/include/mysql-DINSTALL_INCLUDEDIR=include/mysqlinterpreted relative to prefix
Info doc directory--infodir=/usr/share/info-DINSTALL_INFODIR=share/infointerpreted relative to prefix
[edit] Storage Engine Options

Storage engines are plugins, so the options that control pluginbuilding specify which storage engines to build.

The --with-plugins configure option accepts two constructs thathave no direct equivalent in CMake:

--with-plugins accepts a comma-separated list of engine names--with-plugins accepts a "group name" value that is shorthand for aset of engines

With CMake, engines are controlled with individual options.

Suppose that the configure option is:

--with-plugins=csv,myisam,myisammrg,heap,innobase,archive,blackhole

This builds the named engines as static plugins that arecompiled into the server and need not be installed explicitly.

To convert this for CMake, omit these engine names because theyare mandatory (always compiled in):

csv myisam myisammrg heap

Then use these options to enable the InnoDB, ARCHIVE, andBLACKHOLE engines:

-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1

You can also use ON rather than 1 as the option value.

If you used--without-plugin-<engine> inconfigure to exclude a storage engine from the build, use-DWITHOUT_<ENGINE>_STORAGE_ENGINE inCMake.

Examples:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

If neither-DWITH_<ENGINE>_STORAGE_ENGINE nor-DWITHOUT_<ENGINE>_STORAGE_ENGINE arespecified for a given storage engine, the engine is built as ashared module, or excluded if it cannot be built as a sharedmodule. A shared module must be installed using the INSTALL PLUGINstatement or the --plugin-load option before it can be used.

For additional information about CMake options for plugins, seethe Pluginsupport page of the Internals manual.

[edit] Library Options

These options shown in the following table indicate whichlibraries to use.

 

Parameterconfigure OptionCMake OptionCMake Notes
readline library--with-readline-DWITH_READLINE=1 
SSL library--with-ssl=/usr-DWITH_SSL=system 
zlib library--with-zlib-dir=/usr-DWITH_ZLIB=system 
libwrap library--without-libwrap-DWITH_LIBWRAP=0 

 

[edit] Miscellaneous Options

Most of the previous MySQL build options are supported. Thenormal mapping between old and new is uppercase, remove leadingdashes, replace dash with underscore.

Examples:

--with-debug => WITH_DEBUG=1
--with-embedded-server => WITH_EMBEDDED_SERVER
Parameterconfigure OptionCMake OptionCMake Notes
TCP/IP port number--with-tcp-port-=3306-DMYSQL_TCP_PORT=3306 
UNIX socket file--with-unix-socket-path=/tmp/mysqld.sock-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 
Enable LOCAL for LOAD DATA--enable-local-infile-DENABLED_LOCAL_INFILE=1 
Extra charsets--with-extra-charsets=all-DEXTRA_CHARSETS=alldefault is "all"
Default charset--with-charset=utf8-DDEFAULT_CHARSET=utf8 
Default collation--with-collation=utf8_general_ci-DDEFAULT_COLLATION=utf8_general_ci 
Build the server--with-servernone 
Build the embedded server--with-embedded-server-DWITH_EMBEDDED_SERVER=1 
libmysqld privilege control--with-embedded-privilege-controlnonealways enabled?
Install the documentation--without-docsnone 
Big tables--with-big-tables, --without-big-tablesnonetables are big by default
mysqld user--with-mysqld-user=mysql-DMYSQL_USER=mysqlmysql is the default
Debugging--without-debug-DWITH_DEBUG=0default is debugging disabled
GIS support--with-geometrynonealways enabled?
Community features--enable-community-featuresnonealways enabled
Profiling--disable-profiling-DENABLE_PROFILING=0enabled by default
pstack--without-pstacknonepstack is removed
Assembler string functions--enable-assemblernone 
Build type--build=x86_64-pc-linux-gnuno equivalentunneeded?
Cross-compile host--host=x86_64-pc-linux-gnuno equivalentunneeded?
Client flag--with-client-ldflags=-lstdc++noneunneeded
Client flag--enable-thread-safe-clientnoneunneeded, clients are always thread safe
Comment--with-comment='string'-DWITH_COMMENT='string' 
Shared/static binaries--enable-shared --enable-staticnonethere is only DISABLE_SHARED
Memory use--with-low-memorynoneunneeded
[edit] Debugging the Configuration Process

Configuration with autotools produces config.log andconfig.status files.

Configuration with CMake produces files under the CMakeFilesdirectory : CMakeFiles/CMakeError.log andCMakeFiles/CMakeOutput.log

[edit] Interface to Third-Party Tools

Previously, third-party tools that need to determine the MySQLversion from the MySQL source read the configure.in file in thetop-level source directory. For example, the AC_INIT line for5.5.7-rc looked like this:

AC_INIT([MySQL Server], [5.5.7-rc], [], [mysql])

Such tools now can read the VERSION file. For example, if theversion is 5.5.8, the file looks like this:

MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=5
MYSQL_VERSION_PATCH=8
MYSQL_VERSION_EXTRA=

If the source is not for a General Availablility (GA) release,the MYSQL_VERSION_EXTRA value will be nonempty. For example, thevalue for a Release Candidate release would look like this:

MYSQL_VERSION_EXTRA=rc

To construct a five-digit number from the version components,use this formula:

MYSQL_VERSION_MAJOR*10000 + MYSQL_VERSION_MINOR*100 +MYSQL_VERSION_PATCH

Retrieved from "http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide"

This page has been accessed 2,359 times. This page was lastmodified 20:51, 14 December 2010.

转载自: http://blog.sina.com.cn/s/blog_78dcfc650100q1br.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值