- 在工程根目录下执行
autoscan
命令自动生成configure.scan文件 - 把configure.scan文件重命名为configure.in
- 修改configure.in内容如下两处宏参数:
# 其中server是指定生成的程序名
AM_INIT_AUTOMAKE(server, 1.0)
# 其中Debut/makefile是指定生成的makefile的路径
AC_CONFIG_FILES([Debug/makefile])
- 编辑生成g_makefile.sh脚本,代码如下:
#!/bin/sh
# 将Makefile.am放在工程目录下的Debug目录中;
# 此脚本必须放在工程根目录下, main.cpp文件放在工程根目录下;
function generate_src_list()
{
echo "server_SOURCES=\\";
for SOURCE_FILE in `find . -iname "*.cpp" -or -iname "*.cc" | grep -v "main.cpp" | sort -r`
do
echo ".$SOURCE_FILE \\";
done;
echo "../main.cpp"
echo
}
function generate_inc_list()
{
echo "server_CPPFLAGS=\\";
for PATH_NAME in `find . -iname "*.h" | sed 's/\/[A-Z_a-z0-9]*\.h$//g' | sort -u | grep -v "Debug\|^\.$\|\.pb\.h"`
do
echo "-I.$PATH_NAME \\";
done;
echo "-I.."
}
echo "bindir=\${prefix}/Debug"
echo
echo "bin_PROGRAMS = server"
echo
cat def.mk
echo
echo
generate_inc_list
echo
generate_src_list
echo
5.编辑生成auto_compile_ex.sh脚本,代码如下:
#!/bin/sh
# 此脚本必须在工程根目录下执行
LOCAL_PATH=$(pwd)
rm -rf autoscan.log aclocal.m4 config.* configure depcomp install-sh missing ltmain.sh m4 stamp-h1 autom4te.cache lib_log log conf*.file
svn update
if [ $# -gt 0 ];then
if [ $1 == "clean" ]; then
exit 0;
fi;
fi;
if [ ! -d Debug ]; then
mkdir Debug;
fi;
if [ ! -d m4 ]; then
mkdir m4;
fi;
sh g_makefile.sh > Debug/makefile.am
aclocal -I m4
autoheader
libtoolize --force
automake --add-missing
autoconf
#CC="distcc g++" CXX="distcc g++" ./configure --prefix=`pwd`
CC="g++" CXX="g++" ./configure --prefix=`pwd`
if [ $? -ne 0 ]; then
echo "confiture error;";
exit -1;
fi;
cd ${LOCAL_PATH}/Debug
#make clean;
make -j12 all;
if [ $? -ne 0 ]; then
echo "make error;";
exit -1;
fi;
cd ..
rm -rf autoscan.log aclocal.m4 config.* configure depcomp install-sh missing ltmain.sh m4 stamp-h1 autom4te.cache lib_log log conf*.file
6.在工程根目录下执行如下命令进行自动编译:
sh auto_compile_ex.sh