SmartLockerTools/resources/build.sh

135 lines
3.7 KiB
Bash
Raw Normal View History

2024-10-03 20:47:45 +08:00
#!/bin/bash
base_path=$(pwd)
2024-11-05 21:07:15 +08:00
if [[ $base_path =~ ^/mnt/ ]]; then
2024-11-05 20:54:28 +08:00
build_path=/tmp/build
2024-11-05 21:07:15 +08:00
else
build_path=${base_path}/build
2024-11-05 20:54:28 +08:00
fi
2024-11-05 21:07:15 +08:00
echo "build path: $build_path"
2024-10-16 00:46:15 +08:00
qt_prefix_path="/opt/Qt/6.8.0/gcc_64"
2024-10-03 20:47:45 +08:00
debug_deploy=false
if [ -d ${qt_prefix_path} ]; then # 先找Qt6
cmake_qt_parameters="-DCMAKE_PREFIX_PATH=${qt_prefix_path} \
-DQT_QMAKE_EXECUTABLE=${qt_prefix_path}/bin/qmake \
-DQT_DIR=${qt_prefix_path}/lib/cmake/Qt6 \
-DQt6_DIR=${qt_prefix_path}/lib/cmake/Qt6 \
-DQt6Core_DIR=${qt_prefix_path}/lib/cmake/Qt6Core \
-DQt6Gui_DIR=${qt_prefix_path}/lib/cmake/Qt6Gui \
-DQt6Qml_DIR=${qt_prefix_path}/lib/cmake/Qt6Qml \
-DQt6Widgets_DIR=${qt_prefix_path}/lib/cmake/Qt6Widgets \
-DQt6Quick_DIR=${qt_prefix_path}/lib/cmake/Qt6Quick \
-DQt6Svg_DIR=${qt_prefix_path}/lib/cmake/Qt6Svg "
elif [ -d "/opt/Qt/5.15.2/gcc_64" ]; then
qt_prefix_path="/opt/Qt/5.15.2/gcc_64"
cmake_qt_parameters="-DCMAKE_PREFIX_PATH=${qt_prefix_path} \
-DQT_QMAKE_EXECUTABLE=${qt_prefix_path}/bin/qmake \
-DQT_DIR=${qt_prefix_path}/lib/cmake/Qt5 \
-DQt5_DIR=${qt_prefix_path}/lib/cmake/Qt5 \
-DQt5Core_DIR=${qt_prefix_path}/lib/cmake/Qt5Core \
-DQt5Gui_DIR=${qt_prefix_path}/lib/cmake/Qt5Gui \
-DQt5Qml_DIR=${qt_prefix_path}/lib/cmake/Qt5Qml \
-DQt5Widgets_DIR=${qt_prefix_path}/lib/cmake/Qt5Widgets \
-DQt5Quick_DIR=${qt_prefix_path}/lib/cmake/Qt5Quick \
-DQt5Svg_DIR=${qt_prefix_path}/lib/cmake/Qt5Svg "
else
cmake_qt_parameters=""
2024-10-16 00:46:15 +08:00
echo "please install qt6.8.0 or qt5.15.2 ..."
2024-10-03 20:47:45 +08:00
fi
function cmake_scan() {
if [ ! -d ${build_path} ]; then
mkdir ${build_path}
fi
if [ $debug_deploy = true ]; then
build_mode=-DCMAKE_BUILD_TYPE=Debug
echo "build application in debug mode."
else
build_mode=-DCMAKE_BUILD_TYPE=Release
echo "build application in release mode."
fi
cmake \
-G Ninja \
-S ${base_path} \
-B ${build_path} \
${cmake_qt_parameters} \
$build_mode
}
function build() {
if [ ! -f "${build_path}/CMakeCache.txt" ]; then
cmake_scan
fi
if [ $? -ne 0 ]; then
exit 1
fi
cmake \
--build ${build_path} \
--target all
if [ $? -ne 0 ]; then
exit 1
fi
}
2024-11-05 20:54:28 +08:00
function clean(){
rm -fr ${build_path}
}
2024-10-03 20:47:45 +08:00
function deploy() {
if [ -d ${build_path}/lib ]; then
rm -fr ${build_path}/lib
fi
mkdir ${build_path}/lib
ldd ${build_path}/Analyser/Analyser.AppImage | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ${build_path}/lib
ldd ${build_path}/Analyser/Analyser.AppImage | grep "ld-linux" | awk '{print $1}' | xargs -I '{}' cp -v '{}' ${build_path}/lib
# ldd ${build_path}/OtaUpdate/SmartLockerUpdater | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ${build_path}/lib
# ldd ${build_path}/OtaUpdate/SmartLockerUpdater | grep "ld-linux" | awk '{print $1}' | xargs -I '{}' cp -v '{}' ${build_path}/lib
rm ${build_path}/lib/ld-linux-x86-64.so.2
rm ${build_path}/lib/libc.so.6
rm ${build_path}/lib/libm.so.6
rm ${build_path}/lib/libstdc++.so.6
2024-10-04 00:32:55 +08:00
cd build
cpack
cd ..
}
function change_log() {
commit_message=$(git log -1 --pretty=format:"%B")
echo "Latest commit message:"
echo "$commit_message"
echo "$commit_message" >${build_path}/CHANGELOG.txt
echo "Commit message has been written to ${build_path}/CHANGELOG.txt"
2024-10-03 20:47:45 +08:00
}
function main() {
local cmd=$1
shift 1
case $cmd in
build)
build
;;
scan)
cmake_scan
;;
clean)
clean
;;
deploy)
deploy
;;
2024-10-04 00:32:55 +08:00
changelog)
change_log
;;
2024-10-03 20:47:45 +08:00
*)
build
;;
esac
}
main $@