学习《Unix环境高级编程》的编译过程有点麻烦,敲命令行经常敲错,因此单独写了个小的shell脚本来生成相关工程:
有了这个东西,省去了一些麻烦,每次只需要make以下就行了:
代码如下:
#!/bin/bash
# author: crane
# date : 2012-12-24
makeApueProject()
{
mkdir $1
exec 3>"$1/Makefile"
echo "#------------------------apue make file------------------" >&3
echo "#auto generated by shell script" >&3
echo 'cc=gcc' >&3
echo 'include=..' >&3
echo 'lib=../libapue.a' >&3
echo "$1 : $1.o" >&3
echo " \$(cc) -o $1 $1.o \$(lib)">&3
echo "$1.o : $1.c" >&3
echo " \$(cc) -I\$(include) -c $1.c" >&3
echo ".PHONY : clean">&3
echo "clean :" >&3
echo " -rm $1 $1.o" >&3
exec 3>&-
exec 4>"$1/$1.c"
echo '#include "apue.h"' >&4
echo 'int main(int argc, char* argv[])'>&4
echo '{' >&4
echo "" >&4
echo ' return 0;'>&4
echo '}' >&4
exec 4>&-
echo "The project $1 has been generated!"
}
fun()
{
echo "The Project may be exist!, delete it now?"
echo '"yes" will delete the ' "$1 dir " 'and generate project,"no" will exit '
while :
do
read res
if [ "$res"="yes" ]
then
rm -rf "$1"
makeApueProject $1
break
elif [ "$res"="no" ]
then
exit 0
else
echo 'Invalid input, please input "yes" or "no"'
fi
done
}
if [ $# -ne 1 ]
then
echo "$# Please input project name!"
elif [ -d "$1" ]
then
fun $1
else
makeApueProject $1
fi
相关的apue.h 和libapue.a 要放置在工程的上层目录中