Chinaunix首页 | 论坛 | 博客
  • 博客访问: 627424
  • 博文数量: 104
  • 博客积分: 1968
  • 博客等级: 上尉
  • 技术积分: 1587
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-01 17:52
文章分类

全部博文(104)

文章存档

2013年(12)

2012年(50)

2011年(42)

分类: Mysql/postgreSQL

2013-03-28 15:46:49


 Autotools CMake 过渡指南(MySQL



目录

  • 1 介绍
  • 2 命令调用语法
  • 3 安装布局选项
  • 4 存储引擎选项
  • 5 库选项
  • 6 其他选项
  • 7 调试配置过程
  • 8 第三方工具接口



介绍

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:




阅读(3646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~