Author: Kang Lin kl222@126.com
Mac os and IOS, I don’t have the corresponding equipment, please compile and test the students with the corresponding equipment.
Environment variable
export QT_ROOT=Qt install root
# Needed by complied AppImage
export QMAKE=$QT_ROOT/bin/qmake
# When Qt6
export Qt6_ROOT=$QT_ROOT
# When Qt5
export Qt5_ROOT=$QT_ROOT
# Or
# When Qt6
export Qt6_DIR=$QT_ROOT/lib/cmake/Qt6
# When Qt5
export Qt5_DIR=$QT_ROOT/lib/cmake/Qt5
CMAKE parameters
# Qt6
cmake -DQT_ROOT=[Qt install root] -DQt6_DIR=[Qt install root]/lib/cmake/Qt6 ......
# Qt5
cmake -DQT_ROOT=[Qt install root] -DQt5_DIR=[Qt install root]/lib/cmake/Qt5 ......
# Needed by complied AppImage
export QMAKE=$QT_ROOT/bin/qmake
Qt5:
~$ sudo apt install qttools5-dev qttools5-dev-tools qtbase5-dev qtbase5-dev-tools qtmultimedia5-dev qtlocation5-dev libqt5svg5-dev
Qt6: See: Script/build_depend.sh
~$ sudo apt install qmake6 qt6-tools-dev qt6-tools-dev-tools qt6-base-dev qt6-base-dev-tools qt6-qpa-plugins libqt6svg6-dev qt6-l10n-tools qt6-translations-l10n qt6-scxml-dev qt6-multimedia-dev
When multiple distributions of Qt are installed on the system. For example: Install Qt5 and Qt6 at the same time. The system uses the qtchooser tool to select the current Qt version.
l@l:/home/RabbitRemoteControl$ qtchooser
Usage:
qtchooser { -l | -list-versions | -print-env }
qtchooser -install [-f] [-local] <name> <path-to-qmake>
qtchooser -run-tool=<tool name> [-qt=<Qt version>] [program arguments]
<executable name> [-qt=<Qt version>] [program arguments]
Environment variables accepted:
QTCHOOSER_RUNTOOL name of the tool to be run (same as the -run-tool argument)
QT_SELECT version of Qt to be run (same as the -qt argument)
List which version of Qt is currently installed on your system
l@l:/home/RabbitRemoteControl$ qtchooser -l
4
5
default
qt4-x86_64-linux-gnu
qt4
qt5-x86_64-linux-gnu
qt5
qt6
# View the Qt version of your current environment
l@l:/home/RabbitRemoteControl$ qtchooser --print-env
QT_SELECT="default"
QTTOOLDIR="[Paths]"
QTLIBDIR="Prefix=/usr"
Set the Qt version of your current environment
export QT_SELECT=qt6 # Set the Qt6 version of your current environment
# View the Qt version of your current environment
l@l:/home/RabbitRemoteControl$ qtchooser --print-env
QT_SELECT="qt6"
QTTOOLDIR="/usr/lib/qt6/bin"
QTLIBDIR="/usr/lib/aarch64-linux-gnu"
git clone https://github.com/KangLin/RabbitCommon.git
Create and enter the build directory
git clone --recursive https://github.com/KangLin/Calendar.git
cd Calendar
mkdir build
windows or linux
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install \
-DCMAKE_BUILD_TYPE=Release \
-DQt6_DIR=${QT_ROOT}/lib/cmake/Qt6 \
-DRabbitCommon_ROOT=
cmake --build . --config Release --target install
Compile
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=`pwd`/android-build \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="armeabi-v7a with NEON" \
-DANDROID_PLATFORM=android-18 \
-DQT_ROOT=... -DQt6_DIR=... \
-DRabbitCommon_ROOT=
cmake --build . --config Release --target install
Compile
cd build
cmake .. -G"Unix Makefiles" ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=`pwd`/android-build ^
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake ^
-DCMAKE_MAKE_PROGRAM=${ANDROID_NDK}/prebuilt/windows-x86_64/bin/make.exe ^
-DANDROID_PLATFORM=android-18 ^
-DANDROID_ABI=arm64-v8a ^
-DANDROID_ARM_NEON=ON ^
-DQT_ROOT=... -DQt6_DIR=... ^
-DRabbitCommon_ROOT=
cmake --build . --config Release --target install
Install apk to devices
adb install android-build-debug.apk
linux
sudo apt-get install libssl1.1
Library mode: Add the following code to the project file:
isEmpty(Calendar_DIR): Calendar_DIR=$ENV{Calendar_DIR}
isEmpty(Calendar_DIR){
message("1. Please download Calendar source code from https://github.com/KangLin/Calendar")
message(" ag:")
message(" git clone https://github.com/KangLin/Calendar.git")
message("2. Build the project, get library")
error("2. Then set value Calendar_DIR to library root directory")
}
INCLUDEPATH *= $${Calendar_DIR}/include $${Calendar_DIR}/include/export
LIBS *= -L$${Calendar_DIR}/lib -lLunarCalendar -lCalendar
Submodule mode
add_subdirectory(3th_libs/Calendar/Src)
Non-submodule mode
# Need include ${RabbitCommon_ROOT}/cmake/Translations.cmake
if( "${RabbitCommon_ROOT}" STREQUAL "" )
set(RabbitCommon_ROOT $ENV{RabbitCommon_ROOT})
if( "${RabbitCommon_ROOT}" STREQUAL "" )
set(RabbitCommon_ROOT ${CMAKE_SOURCE_DIR}/../RabbitCommon)
endif()
endif()
if(DEFINED RabbitCommon_ROOT AND EXISTS ${RabbitCommon_ROOT}/Src)
add_subdirectory(${RabbitCommon_ROOT}/Src ${CMAKE_BINARY_DIR}/RabbitCommon)
include(${RabbitCommon_ROOT}/cmake/Translations.cmake)
else()
message("1. Please download RabbitCommon source code from https://github.com/KangLin/RabbitCommon")
message(" ag:")
message(" git clone https://github.com/KangLin/RabbitCommon.git")
message("2. Then set cmake value or environment variable RabbitCommon_ROOT to download root directory.")
message(" ag:")
message(FATAL_ERROR " cmake -DRabbitCommon_ROOT= ")
endif()
set(Calendar_DIR $ENV{Calendar_DIR} CACHE PATH "Set Calendar source code root directory.")
if(EXISTS ${Calendar_DIR}/Src)
add_subdirectory(${Calendar_DIR}/Src ${CMAKE_BINARY_DIR}/Calendar)
else()
message("1. Please download Calendar source code from https://github.com/KangLin/Calendar")
message(" ag:")
message(" git clone https://github.com/KangLin/Calendar.git")
message("2. Then set cmake value or environment variable Calendar_DIR to download root directory.")
message(" ag:")
message(FATAL_ERROR " cmake -DCalendar_DIR= ")
endif()
Library mode:
Cmake parameter Calendar_DIR specifies the installation root directory
FIND_PACKAGE(Calendar)
Add libraries and include in CMakeLists.txt
SET(APP_LIBS ${PROJECT_NAME} ${QT_LIBRARIES})
if(Calendar_FOUND)
target_compile_definitions(${PROJECT_NAME}
PRIVATE -DCalendar)
target_include_directories(${PROJECT_NAME}
PRIVATE "${Calendar_INCLUDE_DIRS}/Src"
"${Calendar_INCLUDE_DIRS}/Src/export")
set(APP_LIBS ${APP_LIBS} ${Calendar_LIBRARIES})
endif()
target_link_libraries(${PROJECT_NAME} ${APP_LIBS})