参考文献:https://www.jianshu.com/p/2f5e586c3402
https://www.cnblogs.com/jeakeven/p/5546614.html
http://www.gnu.org/software/automake/manual/automake.html
细节内容不了解请点击上方链接,下方为脚步,简单修改可以用来编译库文件
#!/bin/sh
此脚本必须在工程根目录下执行
TARGET=server
SOURCE_FILE_TYPE=".cpp .cc"
INC_FILE_TYPE=".h .hpp"
CROSS_COMPILE=
MAKEFILE_AM_PATH=Debug/makefile.am
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 configure.ac compile
autoscan
mv configure.scan configure.ac
#修改点 server 为目标名 . 与TARGET一致
sed -i ‘8a\AM_INIT_AUTOMAKE(server, 1.0)’ configure.ac
#创建Debug目录是autoscan生成的configure.scan中的makefile文件指定到Debug目录中,强制修改会导致makefile.in无法生成
if [ ! -d Debug ]; then
mkdir Debug;
fi;
if [ ! -d m4 ]; then
mkdir m4;
fi;
generate_src_list()
{
echo “${TARGET}_SOURCES=\”;
for _SOURCE_FILE_TYPE in $SOURCE_FILE_TYPE
do
for SOURCE_FILE in find . -iname $_SOURCE_FILE_TYPE |grep -v "main.cpp" | sort -r
do
echo “.$SOURCE_FILE \”;
done;
done;
#echo “…/main.cpp”
echo .find -name "main.cpp"
echo
}
generate_inc_list()
{
echo “${TARGET}_CPPFLAGS=\”;
for _INC_FILE_TYPE in $INC_FILE_TYPE
do
for PATH_NAME in find . -iname $_INC_FILE_TYPE | sed 's/\/[A-Z_a-z0-9]*\.h$//g' | sed 's/\/[A-Z_a-z0-9]*\.hpp//g' | sort -u | grep -v "Debug\|^\.$\|\.pb\.h\.hpp"
do
echo “-I.$PATH_NAME \”;
done;
done;
echo “-I…”
}
echo “bindir=${prefix}/Debug” > $MAKEFILE_AM_PATH
echo
echo “bin_PROGRAMS = ${TARGET}” >> $MAKEFILE_AM_PATH
echo
generate_inc_list >> $MAKEFILE_AM_PATH
echo
generate_src_list >> $MAKEFILE_AM_PATH
echo
aclocal -I m4
autoheader
#libtoolize --force
automake --add-missing
autoconf
#一下内容可以手动执行,如果是要移植,请手动配置
CC="
C
R
O
S
S
C
O
M
P
I
L
E
g
c
c
"
C
X
X
=
"
{CROSS_COMPILE}gcc" CXX="
CROSSCOMPILEgcc"CXX="{CROSS_COMPILE}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 …