作者:康 林 [email protected]
- 代码库:
- 项目主页
-
日历
- 生日提醒(年周期提醒),包括农历
- 月周期提醒
- 周周期提醒
- 自定义周期
-
自定义任务
- 眼睛护士: 保护视力
-
便签
-
跨平台,支持多操作系统
-
Windows
-
Linux、Unix
-
Android
-
Mac os
-
IOS
Mac os 和 IOS ,本人没有相应设备,请有相应设备的同学自己编译,测试。
-
本软件如果对你有用,或者你喜欢它,请你捐赠,支持作者。谢谢!
-
git clone https://github.com/KangLin/RabbitCommon.git
-
建立并进入build目录
git clone --recursive https://github.com/KangLin/Calendar.git mkdir build
-
编译
cd build qmake ../Calendar.pro RabbitCommon_DIR= make install
- 参数:
- RabbitCommon_DIR: 指向 RabbitCommon 源码目录
- 参数:
-
用 cmake
-
CMAKE 参数:
- [必选] Qt5_DIR: qt5 安装位置(指向Qt5Config.cmake的目录,默认为 Qt5 安装目录/lib/cmake/Qt5)。
详见:https://doc.qt.io/qt-5/cmake-get-started.html
或者 Qt6_DIR: qt6 安装位置(指向Qt6Config.cmake的目录,默认为 Qt6 安装目录/lib/cmake/Qt6) - [必选] RabbitCommon_DIR: 指向 RabbitCommon 源码目录
- [可选] CMAKE_INSTALL_PREFIX: 安装前缀
- [必选] Qt5_DIR: qt5 安装位置(指向Qt5Config.cmake的目录,默认为 Qt5 安装目录/lib/cmake/Qt5)。
-
windows 或 linux
cd build cmake .. -DCMAKE_INSTALL_PREFIX=`pwd`/install \ -DCMAKE_BUILD_TYPE=Release \ -DQt5_DIR=${QT_ROOT}/lib/cmake/Qt5 \ -DRabbitCommon_DIR= cmake --build . --config Release --target install
-
android Qt版本必须大于等于6
- 主机是linux
-
编译
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 \ -DQt6_DIR= \ -DRabbitCommon_DIR= cmake --build . --config Release
-
+ 安装 - 安装库和程序
cmake --build . --config Release --target install
-
主机是windows
-
编译
cd build cmake .. -DCMAKE_INSTALL_PREFIX=%cd%\android-build ^ -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ^ -DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%/build/cmake/android.toolchain.cmake ^ -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK%/prebuilt/windows-x86_64/bin/make.exe ^ -DANDROID_ABI=arm64-v8a ^ -DANDROID_ARM_NEON=ON ^ -DANDROID_PLATFORM=android-24 ^ -DQt6_DIR= ^ -DRabbitCommon_DIR=
-
安装
-
安装库和程序
cmake --build . --config Release --target install
-
-
-
参数说明:https://developer.android.google.cn/ndk/guides/cmake
- ANDROID_ABI: 可取下列值:
目标 ABI。如果未指定目标 ABI,则 CMake 默认使用 armeabi-v7a。
有效的目标名称为:- armeabi:带软件浮点运算并基于 ARMv5TE 的 CPU。
- armeabi-v7a:带硬件 FPU 指令 (VFPv3_D16) 并基于 ARMv7 的设备。
- armeabi-v7a with NEON:与 armeabi-v7a 相同,但启用 NEON 浮点指令。这相当于设置 -DANDROID_ABI=armeabi-v7a 和 -DANDROID_ARM_NEON=ON。
- arm64-v8a:ARMv8 AArch64 指令集。
- x86:IA-32 指令集。
- x86_64 - 用于 x86-64 架构的指令集。
- ANDROID_NDK 主机上安装的 NDK 根目录的绝对路径
- ANDROID_PLATFORM: 如需平台名称和对应 Android 系统映像的完整列表,请参阅 Android NDK 原生 API
- ANDROID_ARM_MODE
- ANDROID_ARM_NEON
- ANDROID_STL: 指定 CMake 应使用的 STL
- c++_shared: 使用 libc++ 动态库
- c++_static: 使用 libc++ 静态库
- none: 没有 C++ 库支持
- system: 用系统的 STL
- ANDROID_ABI: 可取下列值:
目标 ABI。如果未指定目标 ABI,则 CMake 默认使用 armeabi-v7a。
-
安装 apk 到设备
adb install android-build-debug.apk
- 主机是linux
-
-
安装注意
Qt因为版权原因,没有提供openssl动态库,所以必须自己复制openssl的动态库到安装目录下。-
windows
- 如果是32的,可以在Qt安装程序Tools\QtCreator\bin目录下,找到openssl的动态库(libeay32.dll、ssleay32.dll)
- 如果是64位,则需要自己下载openssl的二进制安装包。
-
linux
sudo apt-get install libssl1.1
-
-
直接用源码
-
是QT工程
-
库方式: 在项目文件中加入下列语句:
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
-
-
cmake工程
-
原码:
-
子模块方式
add_subdirectory(3th_libs/Calendar/Src)
-
非子模块方式
# Need include ${RabbitCommon_DIR}/cmake/Translations.cmake if( "${RabbitCommon_DIR}" STREQUAL "" ) set(RabbitCommon_DIR $ENV{RabbitCommon_DIR}) if( "${RabbitCommon_DIR}" STREQUAL "" ) set(RabbitCommon_DIR ${CMAKE_SOURCE_DIR}/../RabbitCommon) endif() endif() if(DEFINED RabbitCommon_DIR AND EXISTS ${RabbitCommon_DIR}/Src) add_subdirectory(${RabbitCommon_DIR}/Src ${CMAKE_BINARY_DIR}/RabbitCommon) include(${RabbitCommon_DIR}/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_DIR to download root directory.") message(" ag:") message(FATAL_ERROR " cmake -DRabbitCommon_DIR= ") 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()
-
-
库方式:
-
Cmake 参数指定 Calendar_DIR 到库安装目录
FIND_PACKAGE(Calendar)
-
在 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})
-
-
-
-
加载翻译资源
-
用库中提供的函数
CTasksTools::Instance()->InitResource();
-
自定义
QString szPre; #if defined(Q_OS_ANDROID) || _DEBUG szPre = ":/Translations"; #else szPre = qApp->applicationDirPath() + QDir::separator() + ".." + QDir::separator() + "translations"; #endif m_Translator.load(szPre + "/Calendar_" + QLocale::system().name() + ".qm"); qApp->installTranslator(&m_Translator);
-