MySQL NDB Cluster API 开发人员指南 / 第 2 章 NDB API / 2.1 NDB API 入门 / 2.1.1 编译和链接 NDB API 程序 /
2.1.1.4 使用自动工具
使用 GNU 自动工具通常比编写您自己的 makefile 更快更简单。在本节中,我们提供了一个
autoconf宏
WITH_MYSQL
,可用于向
--with-mysql
配置文件添加选项,并自动为给定的 MySQL 安装设置正确的编译器和链接器标志。
本章中的所有示例都包含一个通用
mysql.m4
文件定义
WITH_MYSQL
. 一个典型的完整示例由实际源文件和以下帮助文件组成:
acinclude
configure.in
Makefile.m4
automake还要求您提供README
,NEWS
,
AUTHORS
, 和ChangeLog
文件;但是,这些可以留空。
要创建所有必需的构建文件,请运行以下命令:
aclocal
autoconf
automake -a -c
configure --with-mysql=/mysql/prefix/path
通常,这只需要完成一次,之后 make将适应任何文件更改。
示例 1-1:acinclude.m4。
m4_include([../mysql.m4])
示例 1-2:configure.in。
AC_INIT(example, 1.0)
AM_INIT_AUTOMAKE(example, 1.0)
WITH_MYSQL()
AC_OUTPUT(Makefile)
示例 1-3:Makefile.am。
bin_PROGRAMS = example
example_SOURCES = example.cc
示例 1-4:包含在 acinclude.m4 中的 WITH_MYSQL 源代码。
dnl
dnl configure.in helper macros
dnl
AC_DEFUN([WITH_MYSQL], [
AC_MSG_CHECKING(for mysql_config executable)
AC_ARG_WITH(mysql, [ --with-mysql=PATH path to mysql_config binary or mysql prefix dir], [
if test -x $withval -a -f $withval
then
MYSQL_CONFIG=$withval
elif test -x $withval/bin/mysql_config -a -f $withval/bin/mysql_config
then
MYSQL_CONFIG=$withval/bin/mysql_config
fi
], [
if test -x /usr/local/mysql/bin/mysql_config -a -f /usr/local/mysql/bin/mysql_config
then
MYSQL_CONFIG=/usr/local/mysql/bin/mysql_config
elif test -x /usr/bin/mysql_config -a -f /usr/bin/mysql_config
then
MYSQL_CONFIG=/usr/bin/mysql_config
fi
])
if test "x$MYSQL_CONFIG" = "x"
then
AC_MSG_RESULT(not found)
exit 3
else
AC_PROG_CC
AC_PROG_CXX
# add regular MySQL C flags
ADDFLAGS=`$MYSQL_CONFIG --cflags`
# add NDB API specific C flags
IBASE=`$MYSQL_CONFIG --include`
ADDFLAGS="$ADDFLAGS $IBASE/storage/ndb"
ADDFLAGS="$ADDFLAGS $IBASE/storage/ndb/ndbapi"
ADDFLAGS="$ADDFLAGS $IBASE/storage/ndb/mgmapi"
CFLAGS="$CFLAGS $ADDFLAGS"
CXXFLAGS="$CXXFLAGS $ADDFLAGS"
LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r`" -lndbclient"
LDFLAGS="$LDFLAGS "`$MYSQL_CONFIG --libs_r`" -lndbclient"
AC_MSG_RESULT($MYSQL_CONFIG)
fi
])