Skip to content

Commit

Permalink
Add cmake status
Browse files Browse the repository at this point in the history
  • Loading branch information
KangLin committed Jun 14, 2023
1 parent ecfb533 commit 101baac
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 147 deletions.
230 changes: 91 additions & 139 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -1,45 +1,64 @@
name: android

on: [push]
on:
workflow_call:
outputs:
name:
description: "The artifact name"
value: ${{ jobs.build_android.outputs.name }}

jobs:
build_android:

strategy:
matrix:
BUILD_TYPE: [Release]
ANDROID_ABI: [armeabi-v7a, x86]
ANDROID_PLATFORM: [android-28]
os: [Ubuntu-20.04]
qt_version: [6.2.4]
qt_arch: [android_arm64_v8a, android_armv7, android_x86_64]
qt_version: [6.5.1]
include:
- VCPKG_TARGET_TRIPLET: arm-android
qt_version: 6.2.4
- BUILD_TYPE: Release
qt_arch: android_arm64_v8a
qt_version: 6.5.1
VCPKG_TARGET_TRIPLET: arm-android

- BUILD_TYPE: Release
qt_arch: android_armv7
ANDROID_ABI: armeabi-v7a
qt_modules: 'qtscxml qtwebengine qtmultimedia qtimageformats qtserialport'
qt_version: 6.5.1
VCPKG_TARGET_TRIPLET: arm-android

runs-on: ${{ matrix.os }}
- BUILD_TYPE: Release
qt_version: 6.5.1
qt_arch: android_x86_64
VCPKG_TARGET_TRIPLET: x64-android

runs-on: ubuntu-latest

env:
SOURCE_DIR: ${{github.workspace}}/.cache/source
TOOSL_DIR: ${{github.workspace}}/.cache/tools
INSTALL_DIR: ${{github.workspace}}/.cache/install_anrdoi_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}}
RabbitRemoteControl_VERSION: v0.0.25
VCPKGGITCOMMITID: 6adca01a3fadca0cc0b80f03ec57c7c3a0be5c02
qt_modules: '${{matrix.qt_modules}}'
artifact_name: build_android
ANDROID_PLATFORM: android-23
ANDROID_NATIVE_API_LEVEL: 23
qt_modules: 'qtimageformats qtmultimedia qtscxml'

steps:
- uses: actions/checkout@v3
with:
submodules: true
# Map the job outputs to step outputs
outputs:
name: ${{ env.artifact_name }}

- uses: snickerbockers/submodules-init@v4
steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- name: make directory
run: |
cmake -E make_directory ${{env.SOURCE_DIR}}
cmake -E make_directory ${{env.TOOSL_DIR}}
cmake -E make_directory ${{env.INSTALL_DIR}}
cmake -E make_directory ${{github.workspace}}/build
- name: Cache Qt
id: cache-qt
Expand All @@ -49,40 +68,32 @@ jobs:
key: qt_${{matrix.qt_version}}_${{matrix.qt_arch}}

- name: Install Qt
# You may pin to the exact commit or the version.
# uses: jurplel/install-qt-action@a962fb91949c8e846a3e4a944d50e7ef5cc3a28a
- name: Install Qt of gcc_64
uses: jurplel/install-qt-action@v3
with:
dir: '${{env.TOOSL_DIR}}/qt' # optional
version: '${{matrix.qt_version}}'
#host: 'linux'
target: 'desktop'
arch: 'gcc_64'
set-env: false
# cached: '${{ steps.cache-qt.outputs.cache-hit }}' # optional, default is false

- name: Install Qt of android
uses: jurplel/install-qt-action@v3
with:
# Directory to install Qt
dir: '${{env.TOOSL_DIR}}/qt' # optional
# Version of Qt to install
version: '${{matrix.qt_version}}' # optional, default is 5.15.2
version: '${{matrix.qt_version}}'
# Host platform
#host: linux # optional
# Target platform for build
target: 'android' # optional, default is desktop
# Architecture for Windows/Android
arch: '${{matrix.qt_arch}}' # optional
# Whether or not to install Qt dependencies on Linux
#install-deps: true # optional, default is true
# Additional Qt modules to install
modules: '${{env.qt_modules}}' # optional
# Force a Qt mirror in case the default is not working
#mirror: # optional
# Whether or not to actually download Qt
cached: '${{ steps.cache-qt.outputs.cache-hit }}' # optional, default is false
# Whether or not to automatically run setup-python to find a valid python version.
#setup-python: false # optional, default is true
# Qt tools to download--specify comma-separated argument lists which are themselves separated by spaces: <tool_name>,<tool_version>,<tool_arch>
#tools: # optional
# Whether or not to actually install Qt or just the tools from the tools argument
#tools-only: false # optional, default is false
# Version of aqtinstall to use in case of issues
#aqtversion: # optional, default is ==0.10.0
# Version of py7zr to use in case of issues
#py7zrversion: # optional, default is ==0.11.0
# Any extra arguments to append to the back
#extra: # optional
# Additional Qt modules to install
modules: '${{env.qt_modules}}' # optional. See: https://ddalcino.github.io/aqt-list-server/

- name: run-vcpkg
uses: lukka/run-vcpkg@v7.4
Expand All @@ -105,7 +116,7 @@ jobs:
with:
path: |
${{env.INSTALL_DIR}}
key: cache-installed-android
key: cache-installed-android-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}

- name: Build libvncserver
working-directory: ${{env.SOURCE_DIR}}
Expand Down Expand Up @@ -170,33 +181,33 @@ jobs:
# cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install/strip
# fi

- name: build log4qt
working-directory: ${{env.SOURCE_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
run: |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/Log4Qt ]; then
git clone -b v1.5.1 "https://github.com/MEONMedical/Log4Qt.git"
cd Log4Qt
cmake -E make_directory build
cd build
cmake .. -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DLOG4QT_ENABLE_EXAMPLES=OFF \
-DLOG4QT_ENABLE_TESTS=OFF \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{matrix.BUILD_TYPE}}
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip
fi
# - name: build log4qt
# working-directory: ${{env.SOURCE_DIR}}
# env:
# QT_ROOT: ${{env.Qt5_Dir}}
# run: |
# if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/Log4Qt ]; then
# git clone -b v1.5.1 "https://github.com/MEONMedical/Log4Qt.git"
# cd Log4Qt
# cmake -E make_directory build
# cd build
# cmake .. -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
# -DLOG4QT_ENABLE_EXAMPLES=OFF \
# -DLOG4QT_ENABLE_TESTS=OFF \
# -DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
# -DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
# -DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
# -DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
# -DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
# -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
# -DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \
# -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
# -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
# -DANDROID_ABI=${{matrix.ANDROID_ABI}} \
# -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
# cmake --build . --config ${{matrix.BUILD_TYPE}}
# cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip
# fi

- name: build qxmpp
working-directory: ${{env.SOURCE_DIR}}
Expand Down Expand Up @@ -231,14 +242,14 @@ jobs:
run: git clone https://github.com/KangLin/RabbitCommon.git

- name: build RabbitRemoteControl
working-directory: ${{github.workspace}}/build
env:
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
QT_ROOT: ${{env.Qt5_Dir}}
STOREPASS: ${{secrets.STOREPASS}}
run: |
cmake -E make_directory ${{github.workspace}}/build
cd ${{github.workspace}}/build
cmake ${{github.workspace}} \
sudo chmod 777 ${Qt6_DIR}/bin/qt-cmake
${Qt6_DIR}/bin/qt-cmake ${{github.workspace}} \
-DCMARK_SHARED=OFF \
-DCMARK_TESTS=OFF \
-DCMARK_STATIC=ON \
Expand All @@ -248,77 +259,18 @@ jobs:
-Dtigervnc_DIR=${{env.INSTALL_DIR}}/lib/cmake \
-DQXmpp_DIR=${{env.INSTALL_DIR}}/lib/cmake/qxmpp \
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DQT_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Gui \
-DQt5Widgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Widgets \
-DQt5Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Xml \
-DQt5Sql_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Sql \
-DQt5Positioning_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Positioning \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DQt5Multimedia_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Multimedia \
-DQt5LinguistTools_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5LinguistTools \
-DQt5Qml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Qml \
-DQt5Quick_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Quick \
-DQt5QuickWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5QuickWidgets \
-DQt5AndroidExtras_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5AndroidExtras \
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DQt5WebEngineWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5WebEngineWidgets \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH="${{env.QT_ROOT}}:${{env.INSTALL_DIR}}" \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{ matrix.BUILD_TYPE }}
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install-runtime
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target APK
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}} \
-DQt6LinguistTools_DIR=${Qt6_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools
cmake --build . --config ${{matrix.BUILD_TYPE}} --target all
APK_FILE=`find . -name "android-*.apk"`
cp $APK_FILE RabbitRemoteControl_${{env.Calendar_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk
- name: Package
if: ${{matrix.BUILD_TYPE == 'Release'}}
working-directory: ${{env.INSTALL_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
run: |
APK_FILE=`find . -name "install-release-signed.apk"`
APK_NAME=RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${RabbitRemoteControl_VERSION}.apk
mv -f ${APK_FILE} ${APK_NAME}
APK_FILE=${APK_NAME}
cp ${{github.workspace}}/Update/update_android.xml .
md5sum ${APK_FILE} > ${APK_FILE}.md5
MD5=`cat ${APK_FILE}.md5 | awk '{print $1}'`
echo "MD5:${MD5}"
sed -i "s/<VERSION>.*</<VERSION>${RabbitRemoteControl_VERSION}</g" update_android.xml
sed -i "s/<INFO>.*</<INFO>Release rabbit remote control ${RabbitRemoteControl_VERSION}</g" update_android.xml
sed -i "s/<TIME>.*</<TIME>`date`</g" update_android.xml
sed -i "s/<ARCHITECTURE>.*</<ARCHITECTURE>${BUILD_ARCH}</g" update_android.xml
sed -i "s/<MD5SUM>.*</<MD5SUM>${MD5}</g" update_android.xml
sed -i "s/<FILENAME>.*</<FILENAME>${APK_NAME}</g" update_android.xml
sed -i "s:<URL>.*<:<URL>https\://github.com/KangLin/RabbitRemoteControl/releases/download/${RabbitRemoteControl_VERSION}/${APK_NAME}<:g" update_android.xml
sed -i "s/<MIN_UPDATE_VERSION>.*</<MIN_UPDATE_VERSION>${RabbitRemoteControl_VERSION}</g" update_android.xml
- name: update
if: ${{ matrix.BUILD_TYPE == 'Release' }}
uses: actions/upload-artifact@v2
- name: Update artifact
#if: ${{ matrix.BUILD_TYPE == 'Release' }}
uses: actions/upload-artifact@v3
with:
name: RabbitRemoteControl_Android_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}
name: ${{ env.artifact_name }}
path: |
${{env.INSTALL_DIR}}/RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}.apk
- name: Upload To Github Release
if: ${{matrix.ANDROID_ABI=='armeabi-v7a' && matrix.BUILD_TYPE == 'Release' && startsWith(github.ref, 'refs/tags/') }}
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
prerelease: true
# body: |
# [:cn: 修改日志](ChangeLog_zh_CN.md) [:cn: 说明](README_zh_CN.md)
# [:us: Change log](ChangeLog.md) [:us: README](README.md)
files: |
${{env.INSTALL_DIR}}/RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}.apk
${{env.INSTALL_DIR}}/RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}.apk.md5
${{env.INSTALL_DIR}}/update_android.xml
${{github.workspace}}/build/RabbitRemoteControl_${{env.Calendar_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk
26 changes: 20 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,18 @@ jobs:
macos:
uses: ./.github/workflows/macos.yml

android:
uses: ./.github/workflows/android.yml

deploy:
if: ${{ startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
needs: [ubuntu, mingw, msvc]
needs: [ubuntu, mingw, msvc, android, macos]
steps:
- name: Checkout Repository
uses: actions/checkout@v3
with:
submodules: true
submodules: false

- name: Download ubuntu
uses: actions/download-artifact@v3
Expand All @@ -55,15 +58,26 @@ jobs:
name: ${{ needs.macos.outputs.name }}
path: ${{ env.artifact_path }}

- name: Download android
uses: actions/download-artifact@v3
with:
name: ${{ needs.android.outputs.name }}
path: ${{ env.artifact_path }}

- name: Make note file
run: |
echo "[:cn: 修改日志](ChangeLog_zh_CN.md) [:us: Change log](ChangeLog.md)" > NoteFile
echo "" >> NoteFile
echo "File checksum:" >> NoteFile
cd ${{ env.artifact_path }}
echo "[:cn: 修改日志](https://github.com/KangLin/RabbitRemoteControl/blob/${{env.RabbitRemoteControl_VERSION}}/ChangeLog_zh_CN.md)" > Release.md
echo "[:en: Change log](https://github.com/KangLin/RabbitRemoteControl/blob/${{env.RabbitRemoteControl_VERSION}}/ChangeLog.md)" >> Release.md
echo "" >> Release.md
echo "文件签名:" >> Release.md
for file in *
do
md5sum $file >> ../NoteFile
echo $file
if [ -f $file ]; then
md5sum $file > $file.md5sum
cat $file.md5sum >> Release.md
fi
done
- name: Upload To Github Release
Expand Down
2 changes: 1 addition & 1 deletion App/Client/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,4 +106,4 @@ if(UNIX AND NOT ANDROID)
endif()

# Install QIcon theme
INSTALL_ICON_THEME()
INSTALL_ICON_THEME(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Resource/icons)
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Author: Kang Lin <kl222@126.com>

cmake_minimum_required(VERSION 3.19)
cmake_minimum_required(VERSION 3.21)
MESSAGE(STATUS "Found CMake ${CMAKE_VERSION}")

project(RabbitRemoteControl
DESCRIPTION "Rabbit Remote Control"
Expand Down

0 comments on commit 101baac

Please sign in to comment.