forked from gary/ems
2
0
Fork 0
sun_ems/ems_c/scripts/build_and_package.sh

86 lines
2.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
# 定义项目名称和版本等信息
PROJECT_NAME="_EMS_C_V1.0.0"
VERSION="1.0.0"
ARCHITECTURE="arm64" # 指定目标架构(飞凌)
DB_PATH="/opt/company_ems/db/sqlite3.db" # 数据库路径
DEB_PACKAGE_NAME="${PROJECT_NAME}_${VERSION}_${ARCHITECTURE}.deb"
DEB_OUTPUT_PATH="/opt/${DEB_PACKAGE_NAME}"
# 返回到项目根目录
cd "$(dirname "$0")/.."
# 创建并进入构建目录
mkdir -p build && cd build
# 清除 build 目录下的所有文件
rm -rf *
# 配置CMake以使用交叉编译
cmake ..
# 编译项目
make -j$(nproc)
# 确保可执行文件存在
if [[ ! -f "_EMS_C_V1.0.0" ]]; then
echo "可执行文件未找到: _EMS_C_V1.0.0"
exit 1
fi
# 准备.deb包目录结构
DEB_BUILD_DIR="/opt/${PROJECT_NAME}_${VERSION}_${ARCHITECTURE}_deb" # 修改为/opt目录
mkdir -p ${DEB_BUILD_DIR}/DEBIAN
mkdir -p ${DEB_BUILD_DIR}/company_ems/bin
mkdir -p ${DEB_BUILD_DIR}/company_ems/db
# mkdir -p ${DEB_BUILD_DIR}/usr/lib # 创建/usr/lib目录
# 创建目标目录(如果不存在)
sudo mkdir -p /opt/company_ems/bin/
# 拷贝可执行文件和其他库文件
cp _EMS_C_V1.0.0 "${DEB_BUILD_DIR}/company_ems/bin/"
# sudo cp -r ./lib/* /usr/lib/ # 拷贝lib下的文件
# sudo ldconfig # 更新库缓存
# 创建小写版本的可执行文件副本
cp "${DEB_BUILD_DIR}/company_ems/bin/_EMS_C_V1.0.0" "${DEB_BUILD_DIR}/company_ems/bin/company_ems_c_v1.0.0"
# 删除大写版本的可执行文件
rm "${DEB_BUILD_DIR}/company_ems/bin/_EMS_C_V1.0.0"
# 复制数据库到预定位置
cp "${DB_PATH}" "${DEB_BUILD_DIR}/company_ems/db/"
# 创建控制文件
cat <<EOF >${DEB_BUILD_DIR}/DEBIAN/control
Package: company-ems
Version: ${VERSION}
Section: base
Priority: optional
Architecture: ${ARCHITECTURE}
Depends: libc6, libsqlite3-0, libxml2, libssl1.1
Maintainer: Your Name <you@example.com>
Description: EMS C Project for ARM
This package is designed for ARM architecture.
EOF
# 删除之前同名的.deb包如果存在
if [[ -f "${DEB_OUTPUT_PATH}" ]]; then
echo "删除之前的deb包: ${DEB_OUTPUT_PATH}"
rm "${DEB_OUTPUT_PATH}"
fi
# 构建.deb包
dpkg-deb --build ${DEB_BUILD_DIR}
# 移动到指定位置
mv "${DEB_BUILD_DIR}.deb" "${DEB_OUTPUT_PATH}"
# 清理
rm -rf ${DEB_BUILD_DIR}
cd ..
echo "Deb包构建完成${PROJECT_NAME}_${VERSION}_${ARCHITECTURE}.deb"