Browse Source

更新工程编译脚本

master
zhaohe 3 years ago
parent
commit
e113b4aea0
  1. 4
      CMakeLists.txt
  2. 25
      README.md
  3. 100
      sh/iflytool.sh
  4. 11
      sh/packet.sh

4
CMakeLists.txt

@ -44,9 +44,9 @@ include(dep/zwebservice/module.cmake)
zadd_executable(
TARGET
${PROJECT_NAME}.out
app.out
INSTALL
${PROJECT_NAME}
app
LINK_LIBRARIES
pthread
INCLUDE_DIRECTORIES

25
README.md

@ -9,16 +9,25 @@ env/ 应用程序运行环境
build/ 应用程序编译目录
```
```
编译说明
## 编译RK3328
```bash
# 初始化环境
./sh/iflytool.sh envsetup rk3328
# 编译打包部署(整包)
./sh/iflytool.sh --ip <ip> flash
# 编译打包部署,重启系统(整包)
./sh/iflytool.sh --ip <ip> flash reboot
# 编译并只部署应用
./sh/iflytool.sh --ip <ip> flashapp
# 编译RK3328应用
./sh/rk3328_envsetup.sh
# 编译PC应用
./sh/pc_envsetup.sh
# 只部署webapp
./sh/iflytool.sh --ip <ip> flashwebapp
cd build
./build.sh && make -j8
# 配置ssh-key,免密登录
./sh/iflytool.sh --ip <ip> ssh_copy_id
```

100
sh/iflytool.sh

@ -1,5 +1,5 @@
#!/bin/bash
export PROJECT_PATH=$(pwd)
function do_envsetup_pc() {
#构造编译脚本
@ -23,12 +23,24 @@ function do_envsetup_rk3328() {
}
function do_flash_to_rk3328() {
scp -r out/${PROJECT_NAME}.tar.gz ${USER}@${IP}:${ROOTFS_APP_DIR}
function do_flash_to_targetboard() {
scp -r out/${PROJECT_NAME}.tar.gz ${TARGET_USER}@${IP}:/
#如果存在shutdown.sh,则先执行shutdown.sh
ssh ${USER}@${IP} 'if [ -f "/${PROJECT_NAME}/shutdown.sh" ];then /${PROJECT_NAME}/shutdown.sh;fi'
ssh ${USER}@${IP} "cd ${ROOTFS_APP_DIR} && tar -xvf ${PROJECT_NAME}.tar.gz -C ${ROOTFS_APP_DIR}"
ssh ${USER}@${IP} "cd ${ROOTFS_APP_DIR} && rm -rf ${PROJECT_NAME}.tar.gz"
ssh ${TARGET_USER}@${IP} 'if [ -f "/${PROJECT_NAME}/shutdown.sh" ];then /${PROJECT_NAME}/shutdown.sh;fi'
ssh ${TARGET_USER}@${IP} "cd / && tar -xvf app.tar.gz -C /"
ssh ${TARGET_USER}@${IP} "cd / && rm -rf app.tar.gz"
}
function do_flashapp_to_targetboard() {
# 杀死目标程序
ssh ${TARGET_USER}@${IP} "killall app.out"
# 拷贝目标程序
scp -r ${PROJECT_PATH}/build/app/app.out ${TARGET_USER}@${IP}:/app/
}
function do_flashwebapp_to_targetboard() {
ssh ${TARGET_USER}@${IP} "rm -rf /webapp"
scp -r ${PROJECT_PATH}/webapp ${TARGET_USER}@${IP}:/app/webapp
}
##############################################################################
@ -47,11 +59,15 @@ function do_flash_to_rk3328() {
# 解析指令判断指令是否是 envsetup iflytool.sh envsetup rk3328
set -e
is_build=false
is_flash=false
is_reboot=false
is_envsetup=false
export PROJECT_PATH=$(pwd)
for i in "$@"; do
case $i in
envsetup)
@ -76,9 +92,25 @@ for i in "$@"; do
is_packet=true
shift
;;
ssh_copy_id)
is_ssh_copy_id=true
shift
;;
ssh_clear_id)
is_ssh_clear_id=true
shift
;;
flashapp)
is_flashapp=true
shift
;;
flashwebapp)
is_flashwebapp=true
shift
;;
--user)
shift
USER=$1
TARGET_USER=$1
shift
;;
--ip)
@ -113,8 +145,6 @@ if [ "$is_envsetup" = true ]; then
echo "PROJECT_NAME=$PROJECT_NAME" >>${PROJECT_PATH}/build/buildenv
ROOTFS_APP_DIR="/"
echo "ROOTFS_APP_DIR=$ROOTFS_APP_DIR" >>${PROJECT_PATH}/build/buildenv
if [ "$BUILDFOR" = "pc" ]; then
do_envsetup_pc
@ -127,6 +157,11 @@ if [ "$is_envsetup" = true ]; then
exit 0
fi
# 如果没有指定用户名,则默认用户名为 root
if [ -z "$TARGET_USER" ]; then
TARGET_USER=root
fi
#如果flash 则默认编译打包
if [ "$is_flash" = true ]; then
is_build=true
@ -158,54 +193,41 @@ if [ "$is_build" = true ]; then
echo "build"
cd ${PROJECT_PATH}/build
# 根据当前电脑线程数,调用make
./build.sh && make -j$(nproc)
./build.sh && make -j$(nproc) install
fi
# 打包
if [ "$is_packet" = true ]; then
echo "packet for ${BUILDFOR}"
cd ${PROJECT_PATH}
${PROJECT_PATH}/sh/packet_${BUILDFOR}.sh
${PROJECT_PATH}/sh/packet.sh
fi
# 部署
if [ "$is_flash" = true ]; then
if [ "$BUILDFOR" = "pc" ]; then
echo "WARNING:not support flash for pc"
elif [ "$BUILDFOR" = "rk3328" ]; then
do_flash_to_rk3328
else
echo "unknow build for $BUILDFOR"
exit 1
fi
do_flash_to_targetboard
fi
# flashapp
if [ "$is_flashapp" = true ]; then
do_flashapp_to_targetboard
fi
# flashwebapp
if [ "$is_flashwebapp" = true ]; then
do_flashwebapp_to_targetboard
fi
# 重启
if [ "$is_reboot" = true ]; then
if [ "$BUILDFOR" = "pc" ]; then
echo "WARNING:not support reboot for pc"
elif [ "$BUILDFOR" = "rk3328" ]; then
ssh ${USER}@${IP} "reboot"
else
echo "unknow build for $BUILDFOR"
exit 1
fi
ssh ${TARGET_USER}@${IP} "reboot"
fi
#ssh_copy_id
if [ "ssh_copy_id" = true ]; then
if [ "$BUILDFOR" = "pc" ]; then
echo "WARNING:not support ssh_copy_id for pc"
elif [ "$BUILDFOR" = "rk3328" ]; then
ssh-copy-id ${USER}@${IP}
else
echo "unknow build for $BUILDFOR"
exit 1
fi
if [ "$is_ssh_copy_id" = true ]; then
ssh-copy-id ${TARGET_USER}@${IP}
fi
#ssh_clear_id
if [ "ssh_clear_id" = true ]; then
ssh ${USER}@${ip} "rm -rf ~/.ssh/authorized_keys"
if [ "$is_ssh_clear_id" = true ]; then
ssh ${TARGET_USER}@${ip} "rm -rf ~/.ssh/authorized_keys"
fi

11
sh/packet_rk3328.sh → sh/packet.sh

@ -1,13 +1,14 @@
#!/bin/bash
sourece ./build/buildenv
set -e
set -x
export PROJECT_PATH=`pwd`
source ${PROJECT_PATH}/build/buildenv
#打包目录
PACKET_DIR=$PROJECT_PATH/out/${PROJECT_NAME}
PACKET_DIR=$PROJECT_PATH/out/app
# 删除打包目录,重新打包
rm -rf ${PACKET_DIR}
@ -18,10 +19,10 @@ mkdir ${PACKET_DIR}
#1. 编译
cd $PROJECT_PATH/build
./build.sh && make -j8 && make install
# ./build.sh && make -j8 && make install
#2.打包APP
cp $PROJECT_PATH/build/${PROJECT_NAME}/${PROJECT_NAME}.out $PACKET_DIR/
cp $PROJECT_PATH/build/app/app.out $PACKET_DIR/
#3.3 打包webapp
cp -rf $PROJECT_PATH/webapp $PACKET_DIR/
@ -33,7 +34,7 @@ cd $PROJECT_PATH/env/ && cp --path -rf ./* $PACKET_DIR/
cur_date="`date +%Y%m%d`"
cd $PACKET_DIR/../
tar -czvf ${PACKET_DIR}_${cur_date}.tar.gz ${PROJECT_NAME}
tar -czvf ${PACKET_DIR}_${cur_date}.tar.gz app
cp ${PACKET_DIR}_${cur_date}.tar.gz ${PACKET_DIR}.tar.gz
echo "Brief:"
echo "generate ${PACKET_DIR}_${cur_date}.tar.gz..................."
Loading…
Cancel
Save