一个创建工程目录的shell脚本
来源:互联网 发布:飞鸽传书网络连接失败 编辑:程序博客网 时间:2024/05/21 19:37
#!/bin/bash
#$1 为工程名
#遍历参数
for param in $@
do
case "$param" in
"CMAKE" )
CMAKE=1
echo "CMAKE=$CMAKE"
;;
"MAKE" )
MAKE=1
echo "MAKE=$MAKE"
;;
* )
echo "unknown $param"
;;
esac
done
#***************************************************************************
#cmake 函数
###########################################################################
#***************************************************************************
#填充Makefile函数
###########################################################################
fill_makefile()
{
echo "
CROSS?= arm-hisiv100nptl-linux-
ifeq (\$(origin CROSS), undefined)
export CROSS=
endif
GCC = \$(CROSS)gcc
GPP = \$(CROSS)g++
AR = \$(CROSS)ar
ROOT_DIR = .
LIB_DIR := -L\$(ROOT_DIR)/../lib
LIB_INC_DIR := -I\$(ROOT_DIR)/../include
INC_DIR := -I\$(ROOT_DIR)/include
SRC_DIR := \$(ROOT_DIR)/srcs
OBJ_DIR := \$(ROOT_DIR)/objs
LIB_TAG_DIR := \$(ROOT_DIR)/libs
TEST_DIR := \$(ROOT_DIR)/test
#***源代码文件*********************
SRCS := \$(shell find \$(SRC_DIR) -name '*.c')
SRCS := \$(sort \$(SRCS))
TEST := \$(shell find \$(TEST_DIR) -name '*.c')
TEST := \$(sort \$(TEST))
#***目标文件*********************
OBJS := \$(addprefix \$(OBJ_DIR)/,\$(notdir \$(patsubst %.c,%.o,\$(SRCS))))
LIBTARGET := \$(LIB_TAG_DIR)/lib$2.a
LIBTARGET_S := \$(LIB_TAG_DIR)/lib$2.so
TEST_TAG := \$(TEST_DIR)/example
#***库文件*********************
LDFLAGS := -lcurl
# Compiler flags, -g for debug, -c to make an object file
#
CFLAGS = -c -g
CFLAGS_T = -g
# Ar settings to build the library
ARFLAGS = -rcv
COMPILE = \$(GCC) \$(CFLAGS) \"\$<\" -o \$@ \$(LDFLAGS) \$(LIB_DIR) \$(INC_DIR) \$(LIB_INC_DIR)
all:\$(OBJS)
\$(AR) \$(ARFLAGS) -o \$(LIBTARGET) \$(OBJS)
\$(GCC) \$(OBJS) -fpic -shared -o \$(LIBTARGET_S)
@echo \"COMPILE all ok!\"
\$(GCC) -o \$(TEST_TAG) \$(TEST) \$(INC_DIR) \$(LIB_INC_DIR) -L\$(LIB_TAG_DIR) \$(LDFLAGS) \$(LIB_DIR) \$(CFLAGS_T) \$(LIBTARGET)
@chmod 777 * -R
\$(OBJS):\$(OBJ_DIR)/%.o : \$(SRC_DIR)/%.c
@echo \"\$< = \$@\"
\$(GCC) \"\$<\" -o \"\$@\" \$(INC_DIR) \$(LIB_INC_DIR) \$(CFLAGS)
clean:
@echo \"rm -f \$(OBJS) \$(LIBTARGET) \$(LIBTARGET_S) \$(TEST_TAG)\"
@rm -f \$(OBJS) \$(LIBTARGET) \$(LIBTARGET) \$(TEST_TAG)
" > $1
}
#***************************************************************************
#开始创建工程
###########################################################################
PWD=`pwd`
`mkdir $1`
PWD=$PWD/$1
echo "$PWD"
if [ $CMAKE ] ;then
`mkdir $PWD/build`
`touch $PWD/CMakeLists.txt`
fi
`mkdir $PWD/srcs`
if [ $CMAKE ] ; then
`touch $PWD/srcs/CMakeLists.txt`
fi
`mkdir $PWD/objs`
`mkdir $PWD/libs`
`mkdir $PWD/test`
`mkdir $PWD/include`
`mkdir $PWD/bin`
if [ $MAKE ] ; then
`touch $PWD/Makefile`
fill_makefile $PWD/Makefile $1
fi
#$1 为工程名
#遍历参数
for param in $@
do
case "$param" in
"CMAKE" )
CMAKE=1
echo "CMAKE=$CMAKE"
;;
"MAKE" )
MAKE=1
echo "MAKE=$MAKE"
;;
* )
echo "unknown $param"
;;
esac
done
#***************************************************************************
#cmake 函数
###########################################################################
#***************************************************************************
#填充Makefile函数
###########################################################################
fill_makefile()
{
echo "
CROSS?= arm-hisiv100nptl-linux-
ifeq (\$(origin CROSS), undefined)
export CROSS=
endif
GCC = \$(CROSS)gcc
GPP = \$(CROSS)g++
AR = \$(CROSS)ar
ROOT_DIR = .
LIB_DIR := -L\$(ROOT_DIR)/../lib
LIB_INC_DIR := -I\$(ROOT_DIR)/../include
INC_DIR := -I\$(ROOT_DIR)/include
SRC_DIR := \$(ROOT_DIR)/srcs
OBJ_DIR := \$(ROOT_DIR)/objs
LIB_TAG_DIR := \$(ROOT_DIR)/libs
TEST_DIR := \$(ROOT_DIR)/test
#***源代码文件*********************
SRCS := \$(shell find \$(SRC_DIR) -name '*.c')
SRCS := \$(sort \$(SRCS))
TEST := \$(shell find \$(TEST_DIR) -name '*.c')
TEST := \$(sort \$(TEST))
#***目标文件*********************
OBJS := \$(addprefix \$(OBJ_DIR)/,\$(notdir \$(patsubst %.c,%.o,\$(SRCS))))
LIBTARGET := \$(LIB_TAG_DIR)/lib$2.a
LIBTARGET_S := \$(LIB_TAG_DIR)/lib$2.so
TEST_TAG := \$(TEST_DIR)/example
#***库文件*********************
LDFLAGS := -lcurl
# Compiler flags, -g for debug, -c to make an object file
#
CFLAGS = -c -g
CFLAGS_T = -g
# Ar settings to build the library
ARFLAGS = -rcv
COMPILE = \$(GCC) \$(CFLAGS) \"\$<\" -o \$@ \$(LDFLAGS) \$(LIB_DIR) \$(INC_DIR) \$(LIB_INC_DIR)
all:\$(OBJS)
\$(AR) \$(ARFLAGS) -o \$(LIBTARGET) \$(OBJS)
\$(GCC) \$(OBJS) -fpic -shared -o \$(LIBTARGET_S)
@echo \"COMPILE all ok!\"
\$(GCC) -o \$(TEST_TAG) \$(TEST) \$(INC_DIR) \$(LIB_INC_DIR) -L\$(LIB_TAG_DIR) \$(LDFLAGS) \$(LIB_DIR) \$(CFLAGS_T) \$(LIBTARGET)
@chmod 777 * -R
\$(OBJS):\$(OBJ_DIR)/%.o : \$(SRC_DIR)/%.c
@echo \"\$< = \$@\"
\$(GCC) \"\$<\" -o \"\$@\" \$(INC_DIR) \$(LIB_INC_DIR) \$(CFLAGS)
clean:
@echo \"rm -f \$(OBJS) \$(LIBTARGET) \$(LIBTARGET_S) \$(TEST_TAG)\"
@rm -f \$(OBJS) \$(LIBTARGET) \$(LIBTARGET) \$(TEST_TAG)
" > $1
}
#***************************************************************************
#开始创建工程
###########################################################################
PWD=`pwd`
`mkdir $1`
PWD=$PWD/$1
echo "$PWD"
if [ $CMAKE ] ;then
`mkdir $PWD/build`
`touch $PWD/CMakeLists.txt`
fi
`mkdir $PWD/srcs`
if [ $CMAKE ] ; then
`touch $PWD/srcs/CMakeLists.txt`
fi
`mkdir $PWD/objs`
`mkdir $PWD/libs`
`mkdir $PWD/test`
`mkdir $PWD/include`
`mkdir $PWD/bin`
if [ $MAKE ] ; then
`touch $PWD/Makefile`
fill_makefile $PWD/Makefile $1
fi
阅读全文
0 0
- 一个创建工程目录的shell脚本
- shell脚本查看 创建目录
- Tomcat创建实例的一个脚本(shell 脚本)
- shell 脚本为多个指定的目录创建报告
- L脚本语言 写一个清理VC工程目录的脚本
- 输出android目录结构的一个shell 脚本
- 一个创建用户的简单的shell脚本
- shell脚本菜单的创建
- shell脚本的创建编辑
- 获取shell脚本自身所在目录的Shell脚本分享
- 通过linux的shell脚本批量创建用户名,用户名所属目录,设置对应密码
- 通过linux的shell脚本批量创建用户名,用户名所属目录,设置对应密码
- 一个打开目录的脚本
- 一个简单的shell脚本
- 试着写的一个shell脚本
- 一个有用的shell脚本
- Linux下使用Shell脚本快速创建项目目录模板
- 显示目录结构的shell脚本
- 使用文献管理软件Mendeley插入参考文献和引用
- USACO之milk3
- 37 WebGL多个模型组成一个复杂的模型
- C++ 02 —— 访问权限
- SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
- 一个创建工程目录的shell脚本
- linux驱动调试之段错误分析_根据pc值确定出错的代码位置
- 索引
- 递归解决最长公共子序列问题(LCS)
- QT [007] QT UI 的控件操控问题
- Android开发之EditText
- 算法设计与应用基础系列6
- Django module学习之模板
- 安卓学习笔记 6-10 热更新