#!/bin/bash base_path=$(pwd) qt_prefix_path="/opt/Qt/6.6.2/gcc_64" libraries_root="/opt/Libraries" if [ $base_path == /home/* ]; then build_path=${base_path}/build else build_path=/tmp/build fi echo "build directory: $build_path" 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="" echo "please install qt6.6.2 or qt5.15.2 ..." fi function cmake_scan() { if [ ! -d ${build_path} ]; then mkdir ${build_path} fi /opt/Qt/Tools/CMake/bin/cmake \ -G Ninja \ -S ${base_path} \ -B ${build_path} \ -DCMAKE_BUILD_TYPE=Debug \ -DUNIT_TEST=ON \ -DBOOST_ROOT=${libraries_root}/boost_1_86_0 \ -DZeroMQ_ROOT=${libraries_root}/zeromq-4.3.4_debug \ ${cmake_qt_parameters} } function build() { if [ ! -f "${build_path}/CMakeCache.txt" ]; then cmake_scan fi if [ $? -ne 0 ]; then exit 1 fi /opt/Qt/Tools/CMake/bin/cmake \ --build ${build_path} \ --target all if [ $? -ne 0 ]; then exit 1 fi $build_path/UnitTest/UnitTest # valgrind --leak-check=full $build_path/UnitTest/UnitTest } function main() { local cmd=$1 shift 1 case $cmd in build) build ;; *) build ;; esac } main $@