分类: Mysql/postgreSQL
2013-03-28 15:46:49
目录
|
介绍
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。
CMake 可以编译源代码、制作程式库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake 支援 in-place 建构(二进档和源代码在同一个目录树中)和 out-of-place 建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake 也支援静态与动态程式库的建构。
“CMake”这个名字是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
命令调用语法
下表展示了一些常见的配置调用语法和等效的configure命令。如果当前目录不是工作目录请将“.”替换为你的工作目录。
configure Command |
CMake Command |
./configure |
cmake . |
./configure --help |
cmake . -LH or ccmake . |
重新配置和安装之前清除旧的对象文件和缓存信息:
Autotools:
make clean rm config.cache
CMake (Unix):
make clean rm CMakeCache.txt
CMake (Windows):
devenv MySQL.sln /clean del CMakeCache.txt
安装布局选项
这些选项控制在哪里安装MySQL组件。在下表中,CMAKE_INSTALL_PREFIX的值是安装目录的基础。许多其他CMake选项路径都是相对路径。
参数 |
configure选项 |
CMake 选项 |
CMake 备注 |
基本安装目录 |
--prefix=/usr |
-DCMAKE_INSTALL_PREFIX=/usr |
|
mysqld 目录 |
--libexecdir=/usr/sbin |
-DINSTALL_SBINDIR=sbin |
|
Data 目录 |
--localstatedir=/var/lib/mysql |
-DMYSQL_DATADIR=/var/lib/mysql |
|
配置目录 (for my.cnf) |
--sysconfdir=/etc/mysql |
-DSYSCONFDIR=/etc/mysql |
|
Plugin 目录 |
--with-plugindir=/usr/lib64/mysql/plugin |
-DINSTALL_PLUGINDIR=lib64/mysql/plugin |
|
Man page 目录 |
--mandir=/usr/share/man |
-DINSTALL_MANDIR=share/man |
|
Shared-data 目录 |
--sharedstatedir=/usr/share/mysql |
-DINSTALL_SHAREDIR=share |
aclocal/mysql.m4 的安装位置 |
库安装目录 |
--libdir=/usr/lib64/mysql |
-DINSTALL_LIBDIR=lib64/mysql |
|
Header 安装目录 |
--includedir=/usr/include/mysql |
-DINSTALL_INCLUDEDIR=include/mysql |
|
Infodoc 目录 |
--infodir=/usr/share/info |
-DINSTALL_INFODIR=share/info |
存储引擎选项
存储引擎插件,选项控制使用哪个存储引擎。
--with-plugins 这个配置参数接受两个类型的值:
· --with-plugins 接受以逗号分隔的引擎的名字
· --with-plugins 接受 "group name" 对一组引擎
假设有如下参数:
--with-plugins=csv,myisam,myisammrg,heap,innobase,archive,blackhole
这是建立静态插件被编译到服务器中,不需要安装明确命名的引擎。
Cmake的转换,忽略这些引擎的名称,因为它们是强制性的(总是被编译):
csv myisam myisammrg heap
然后用这些选项来启动 InnoDB, ARCHIVE, 和 BLACKHOLE 引擎:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
你可以使用ON来替代参数值 1 。
如果你使用 --without-plugin- 在配置中排除一个引擎,在CMake中请使用-DWITHOUT__STORAGE_ENGINE 。
例如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如果没有 -DWITH__STORAGE_ENGINE 也没有 -DWITHOUT__STORAGE_ENGINE 来指定某个引擎, 此引擎被作为共享模块或者排除它作为共享模块。一个共享的模块必须用INSTALL PLUGIN语句安装 或添加 -plugin-load选项,然后才可以使用。
对于其他CMake的选项的插件信息,可以看到该插件支持页面的内部手册。
库选项
下表中的这些选项指示那些库将被使用。
参数 |
configure 选项 |
CMake 选项 |
CMake 备注 |
readline 库 |
--with-readline |
-DWITH_READLINE=1 |
|
SSL 库 |
--with-ssl=/usr |
-DWITH_SSL=system |
|
zlib 库 |
--with-zlib-dir=/usr |
-DWITH_ZLIB=system |
|
libwrap 库 |
--without-libwrap |
-DWITH_LIBWRAP=0 |
其他选项
以前的MySQL编译选项的支持情况。新与旧的映射是小写变大写,删除前导破折号,用下划线替换破折号。
例如:
--with-debug => WITH_DEBUG=1
--with-embedded-server => WITH_EMBEDDED_SERVER
参数 |
configure 选项 |
CMake 选项 |
CMake 备注 |
TCP/IP 端口号 |
--with-tcp-port-=3306 |
-DMYSQL_TCP_PORT=3306 |
|
UNIX 套接字文件 |
--with-unix-socket-path=/tmp/mysqld.sock |
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock |
|
使用本地数据 |
--enable-local-infile |
-DENABLED_LOCAL_INFILE=1 |
|
额外字符集 |
--with-extra-charsets=all |
-DEXTRA_CHARSETS=all |
默认 "all" |
默认字符集 |
--with-charset=utf8 |
-DDEFAULT_CHARSET=utf8 |
|
默认排序规则 |
--with-collation=utf8_general_ci |
-DDEFAULT_COLLATION=utf8_general_ci |
|
构建服务器 |
--with-server |
none |
|
构建嵌入式服务器 |
--with-embedded-server |
-DWITH_EMBEDDED_SERVER=1 |
|
libmysqld 特权控制 |
--with-embedded-privilege-control |
none |
总是使用 |
安装文档 |
--without-docs |
none |
|
Big table |
--with-big-tables, --without-big-tables |
none |
默认big |
mysqld 用户 |
--with-mysqld-user=mysql |
-DMYSQL_USER=mysql |
默认mysql |
调试 |
--without-debug |
-DWITH_DEBUG=0 |
默认关闭 debugging |
GIS 支持 |
--with-geometry |
none |
始终支持 |
Community 功能 |
--enable-community-features |
none |
始终支持 |
Profiling |
--disable-profiling |
-DENABLE_PROFILING=0 |
默认开启 |
pstack |
--without-pstack |
none |
pstack 被移除 |
汇编字符串函数 |
--enable-assembler |
none |
|
Build 类型 |
--build=x86_64-pc-linux-gnu |
no equivalent |
无 |
交叉编译主机 |
--host=x86_64-pc-linux-gnu |
no equivalent |
无 |
客户端标志 |
--with-client-ldflags=-lstdc++ |
none |
无 |
客户端线程 |
--enable-thread-safe-client |
none |
|
注释 |
--with-comment='string' |
-DWITH_COMMENT='string' |
|
共享/静态二进制文件 |
--enable-shared --enable-static |
none |
只有DISABLE_SHARED |
内存使用 |
--with-low-memory |
none |
无 |
调试配置过程
Autotools和Cmake的配置文件,日志、状态文件。
配置文件生成在CMakeFiles 目录下:
CMakeFiles/CMakeError.log and CMakeFiles/CMakeOutput.log
第三方工具接口
此前,第三方工具,需要确定MySQL版本从MySQL源读取配置。在源文件顶层目录. 例如, AC_INIT 这行 在 5.5.7-rc 中是这样:
AC_INIT([MySQL Server], [5.5.7-rc], [], [mysql])
这样的工具现在可以阅读版本文件。例如,如果版本是5.5.8,文件如下:
MYSQL_VERSION_MAJOR=5 MYSQL_VERSION_MINOR=5 MYSQL_VERSION_PATCH=8 MYSQL_VERSION_EXTRA=
如果源是不为General Availablility(GA)发布,MYSQL_VERSION_EXTRA值将非空。例如,一个候选版本发布的值是这样的:
MYSQL_VERSION_EXTRA=rc
要建立一个五位数的数字版本组件,使用这个公式:
MYSQL_VERSION_MAJOR*10000 + MYSQL_VERSION_MINOR*100 + MYSQL_VERSION_PATCH
URL:
WIKI: