Compare commits

..

3 Commits

3 changed files with 103 additions and 207 deletions

View File

@ -21,20 +21,25 @@ env:
REPO_NAME: ${{ github.event.repository.name }}
APP_NAME: RibbonUI-APP
QT_VERSION: 6.6.3
QT_MODULES: qt5compat
QT_MODULES: qt5compat qtshadertools qtimageformats
OS_MAC: macos-14
QT_ARCH_MAC: clang_64
QT_ARCH_WIN_MINGW: win64_mingw
QT_ARCH_WIN_MSVC: win64_msvc2019_64
QT_ARCH_LINUX: gcc_64
QT_MINGW_TOOLS: "tools_cmake,qt.tools.cmake tools_mingw90,qt.tools.win64_mingw900"
QT_MINGW_TOOLS_INSTALL: mingw1120_64
QT_MSVC_ARCH: x64
QT_MSVC_TOOLS: "tools_cmake,qt.tools.cmake"
QT_MSVC_TOOLS_INSTALL: msvc2019_64
OS_WIN: windows-latest
OS_LINUX: ubuntu-latest
RELEASE_OR_NIGHTLY: ${{ startsWith(github.ref, 'refs/tags/v') && 'RELEASE' || 'NIGHTLY' }}
jobs:
build-macos-shared:
name: macOS (Shared Library)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-14]
qt_ver: ${{ env.QT_VERSION }}
qt_arch: [clang_64]
env:
targetName: ${{ env.APP_NAME }}
runs-on: macos-14
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -44,8 +49,8 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_MAC }}
modules: ${{ env.QT_MODULES }}
- name: Set up Ninja
@ -58,41 +63,32 @@ jobs:
cmake --version
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ matrix.qt_ver }}/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake --build . --target all --config Release --parallel
- name: package
run: |
# 先删除所有dSYM文件减少包的体积
sudo find /Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ matrix.qt_ver }}/macos/qml -name "*.dSYM" | xargs rm -r
# 拷贝依赖
sudo macdeployqt /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${targetName}.app -qmldir=. -verbose=1 -dmg
sudo find /Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/macos/qml -name "*.dSYM" | xargs rm -r
sudo macdeployqt /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${APP_NAME}.app -qmldir=. -verbose=1 -dmg
- uses: actions/upload-artifact@v4
with:
name: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_shared
path: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.targetName }}.dmg
name: ${{ env.APP_NAME }}_${{ env.OS_MAC }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}
path: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.APP_NAME }}.dmg
- name: uploadRelease
if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.targetName }}.dmg
asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_shared.dmg
file: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.APP_NAME }}.dmg
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.OS_MAC }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.dmg
tag: ${{ github.ref }}
overwrite: true
build-macos-static:
name: macOS (Static Library)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-14]
qt_ver: [env.QT_VERSION]
qt_arch: [clang_64]
env:
targetName: ${{ env.APP_NAME }}
runs-on: macos-14
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -102,8 +98,8 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_MAC }}
modules: ${{ env.QT_MODULES }}
- name: Set up Ninja
@ -116,40 +112,32 @@ jobs:
cmake --version
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ matrix.qt_ver }}/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/macos -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
- name: package
run: |
sudo find /Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ matrix.qt_ver }}/macos/qml -name "*.dSYM" | xargs rm -r
# 拷贝依赖
sudo macdeployqt /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${targetName}.app -qmldir=. -verbose=1 -dmg
sudo find /Users/runner/work/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/macos/qml -name "*.dSYM" | xargs rm -r
sudo macdeployqt /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${APP_NAME}.app -qmldir=. -verbose=1 -dmg
- uses: actions/upload-artifact@v4
with:
name: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_static_${{ env.RELEASE_OR_NIGHTLY }}
path: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.targetName }}.dmg
name: ${{ env.APP_NAME }}_${{ env.OS_MAC }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}
path: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.APP_NAME }}.dmg
- name: uploadRelease
if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.targetName }}.dmg
asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.dmg
file: /Users/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${{ env.APP_NAME }}.dmg
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.OS_MAC }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.dmg
tag: ${{ github.ref }}
overwrite: true
build-ubuntu-shared:
name: Ubuntu (Shared Library)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
qt_ver: [env.QT_VERSION]
qt_arch: [gcc_64]
env:
targetName: ${{ env.APP_NAME }}
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -159,8 +147,8 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_LINUX }}
modules: ${{ env.QT_MODULES }}
- name: Set up Ninja
@ -180,7 +168,7 @@ jobs:
cmake --version
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/${{ env.REPO_NAME }}/Qt/${{ matrix.qt_ver }}/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake --build . --target all --config Release --parallel
- name: install QT linux deploy
@ -189,40 +177,33 @@ jobs:
plugins: qt appimage
- name: Check if svg file exists
run: if [ ! -f "${targetName}.svg" ]; then echo "File not found, creating..."; touch ${targetName}.svg; fi
run: if [ ! -f "${APP_NAME}.svg" ]; then echo "File not found, creating..."; touch ${APP_NAME}.svg; fi
- name: package
run: |
# make sure Qt plugin finds QML sources so it can deploy the imported files
export QML_SOURCES_PATHS=./
linuxdeploy-x86_64.AppImage --plugin=qt --output=appimage --create-desktop-file --icon-file=${targetName}.svg --executable=/home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${targetName} --appdir /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/
mv ${{ env.targetName }}-*.AppImage ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
linuxdeploy-x86_64.AppImage --plugin=qt --output=appimage --create-desktop-file --icon-file=${APP_NAME}.svg --executable=/home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${APP_NAME} --appdir /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/
mv ${{ env.APP_NAME }}-*.AppImage ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
- uses: actions/upload-artifact@v4
with:
name: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_shared_${{ env.RELEASE_OR_NIGHTLY }}
path: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
name: ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}
path: ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
- name: uploadRelease
if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.targetName }}_${{ matrix.os }}_${{matrix.qt_ver}}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
file: ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
tag: ${{ github.ref }}
overwrite: true
build-ubuntu-static:
name: Ubuntu (Static Library)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
qt_ver: [env.QT_VERSION]
qt_arch: [gcc_64]
env:
targetName: ${{ env.APP_NAME }}
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -232,8 +213,8 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_LINUX }}
modules: ${{ env.QT_MODULES }}
- name: Set up Ninja
@ -253,7 +234,7 @@ jobs:
cmake --version
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/${{ env.REPO_NAME }}/Qt/${{ matrix.qt_ver }}/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=/home/runner/work/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/gcc_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
- name: install QT linux deploy
@ -262,44 +243,33 @@ jobs:
plugins: qt appimage
- name: Check if svg file exists
run: if [ ! -f "${targetName}.svg" ]; then echo "File not found, creating..."; touch ${targetName}.svg; fi
run: if [ ! -f "${APP_NAME}.svg" ]; then echo "File not found, creating..."; touch ${APP_NAME}.svg; fi
- name: package
run: |
# make sure Qt plugin finds QML sources so it can deploy the imported files
export QML_SOURCES_PATHS=./
# 拷贝依赖
linuxdeploy-x86_64.AppImage --plugin=qt --output=appimage --create-desktop-file --icon-file=${targetName}.svg --executable=/home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${targetName} --appdir /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/
mv ${{ env.targetName }}-*.AppImage ${{ env.targetName }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
linuxdeploy-x86_64.AppImage --plugin=qt --output=appimage --create-desktop-file --icon-file=${APP_NAME}.svg --executable=/home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/${APP_NAME} --appdir /home/runner/work/${{ env.REPO_NAME }}/${{ env.REPO_NAME }}/build/app/release/
mv ${{ env.APP_NAME }}-*.AppImage ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
- uses: actions/upload-artifact@v4
with:
name: ${{ env.targetName }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}
path: ${{ env.targetName }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
name: ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}
path: ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
- name: uploadRelease
if: startsWith(github.event.ref, 'refs/tags/')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ env.targetName }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
asset_name: ${{ env.targetName }}_${{ github.ref_name }}_${{ matrix.os }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
file: ${{ env.APP_NAME }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.OS_LINUX }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.AppImage
tag: ${{ github.ref }}
overwrite: true
build-win-mingw-shared:
name: Windows MinGW (Shared Library)
runs-on: windows-latest
strategy:
matrix:
include:
- qt_arch: win64_mingw
qt_ver: ${{ env.QT_VERSION }}
qt_tools: "tools_mingw,9.0.0-1-202203221220,qt.tools.win64_mingw900"
qt_tools_mingw_install: mingw900_64
env:
targetName: ${{ env.APP_NAME }}.exe
fileName: ${{ env.APP_NAME }}
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -314,22 +284,10 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_WIN_MINGW }}
modules: ${{ env.QT_MODULES }}
- name: Qt6 environment configuration
if: ${{ startsWith( matrix.qt_ver, 6 ) }}
shell: pwsh
run: |
Write-Output "${{ env.Qt6_DIR }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
Write-Output "${{ env.Qt6_DIR }}/../../Tools/${{ matrix.qt_tools_mingw_install }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: where is cmake & where is mingw32-make
shell: pwsh
run: |
Get-Command -Name 'cmake' | Format-List
Get-Command -Name 'mingw32-make' | Format-List
tools: ${{ env.QT_MINGW_TOOLS }}
- name: mingw-build
id: build
@ -337,16 +295,16 @@ jobs:
run: |
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\${{ env.REPO_NAME }}\Qt\${{ matrix.qt_ver }}\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake --build . --target all --config Release --parallel
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:/a/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/mingw_64 -DCMAKE_C_COMPILER=D:/a/${{ env.REPO_NAME }}/Qt/Tools/${{ env.QT_MINGW_TOOLS_INSTALL }}/bin/gcc.exe -DCMAKE_CXX_COMPILER=D:/a/${{ env.REPO_NAME }}/Qt/Tools/${{ env.QT_MINGW_TOOLS_INSTALL }}/bin/g++.exe -DCMAKE_BUILD_TYPE=Release -GNinja ..
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe --build . --target all --config Release --parallel
- name: package
id: package
env:
archiveName: ${{ env.fileName }}_${{ matrix.qt_arch }}_${{ matrix.qt_ver }}_shared_${{ env.RELEASE_OR_NIGHTLY }}
archiveName: ${{ env.APP_NAME }}_${{ env.QT_ARCH_WIN_MINGW }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}
shell: pwsh
run: |
& scripts\windows-mingw-publish.ps1 ${env:archiveName} ${env:targetName}
& scripts\windows-mingw-publish.ps1 ${env:archiveName} ${env:APP_NAME}.exe ${env:REPO_NAME}
$name = ${env:archiveName}
echo "packageName=$name" >> $env:GITHUB_OUTPUT
@ -361,23 +319,13 @@ jobs:
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}.zip
asset_name: ${{ env.fileName }}_${{ github.ref_name }}_${{ matrix.qt_arch }}_Qt${{ matrix.qt_ver }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.zip
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.QT_ARCH_WIN_MINGW }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.zip
tag: ${{ github.ref }}
overwrite: true
build-win-mingw-static:
name: Windows MinGW (Static Library)
runs-on: windows-latest
strategy:
matrix:
include:
- qt_arch: win64_mingw
qt_ver: ${{ env.QT_VERSION }}
qt_tools: "tools_mingw,9.0.0-1-202203221220,qt.tools.win64_mingw900"
qt_tools_mingw_install: mingw900_64
env:
targetName: ${{ env.APP_NAME }}.exe
fileName: ${{ env.APP_NAME }}
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -392,22 +340,10 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_WIN_MINGW }}
modules: ${{ env.QT_MODULES }}
- name: Qt6 environment configuration
if: ${{ startsWith( matrix.qt_ver, 6 ) }}
shell: pwsh
run: |
Write-Output "${{ env.Qt6_DIR }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
Write-Output "${{ env.Qt6_DIR }}/../../Tools/${{ matrix.qt_tools_mingw_install }}/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: where is cmake & where is mingw32-make
shell: pwsh
run: |
Get-Command -Name 'cmake' | Format-List
Get-Command -Name 'mingw32-make' | Format-List
tools: ${{ env.QT_MINGW_TOOLS }}
- name: mingw-build
id: build
@ -415,16 +351,16 @@ jobs:
run: |
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\${{ env.REPO_NAME }}\Qt\${{ matrix.qt_ver }}\mingw_64 -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:/a/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/mingw_64 -DCMAKE_C_COMPILER=D:/a/${{ env.REPO_NAME }}/Qt/Tools/${{ env.QT_MINGW_TOOLS_INSTALL }}/bin/gcc.exe -DCMAKE_CXX_COMPILER=D:/a/${{ env.REPO_NAME }}/Qt/Tools/${{ env.QT_MINGW_TOOLS_INSTALL }}/bin/g++.exe -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe --build . --target all --config Release --parallel
- name: package
id: package
env:
archiveName: ${{ env.fileName }}_${{ matrix.qt_arch }}_${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}
archiveName: ${{ env.APP_NAME }}_${{ env.QT_ARCH_WIN_MINGW }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}
shell: pwsh
run: |
& scripts\windows-mingw-publish.ps1 ${env:archiveName} ${env:targetName}
& scripts\windows-mingw-publish.ps1 ${env:archiveName} ${env:APP_NAME}.exe ${env:REPO_NAME}
$name = ${env:archiveName}
echo "packageName=$name" >> $env:GITHUB_OUTPUT
@ -439,24 +375,13 @@ jobs:
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}.zip
asset_name: ${{ env.fileName }}_${{ github.ref_name }}_${{ matrix.qt_arch }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.zip
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.QT_ARCH_WIN_MINGW }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.zip
tag: ${{ github.ref }}
overwrite: true
build-win-msvc-shared:
name: Windows MSVC (Shared Library)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
include:
- qt_ver: ${{ env.QT_VERSION }}
qt_arch: win64_msvc2019_64
msvc_arch: x64
qt_arch_install: msvc2019_64
env:
targetName: ${{ env.APP_NAME }}.exe
fileName: ${{ env.APP_NAME }}
runs-on: windows-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -471,19 +396,20 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_WIN_MSVC }}
modules: ${{ env.QT_MODULES }}
tools: ${{ env.QT_MSVC_TOOLS }}
- name: msvc-build
id: build
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }}
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ env.QT_MSVC_ARCH }}
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\${{ env.REPO_NAME }}\Qt\${{ matrix.qt_ver }}\msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -GNinja ..
cmake --build . --target all --config Release --parallel
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:/a/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -GNinja ..
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe --build . --target all --config Release --parallel
echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV%
echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV%
echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV%
@ -492,11 +418,11 @@ jobs:
- name: package
id: package
env:
archiveName: ${{ env.fileName }}_${{ matrix.qt_arch }}_${{ matrix.qt_ver }}_shared_${{ env.RELEASE_OR_NIGHTLY }}
msvcArch: ${{ matrix.msvc_arch }}
archiveName: ${{ env.APP_NAME }}_${{ env.QT_ARCH_WIN_MSVC }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}
msvcArch: ${{ env.QT_MSVC_ARCH }}
shell: pwsh
run: |
& scripts\windows-publish.ps1 ${env:archiveName} ${env:targetName}
& scripts\windows-publish.ps1 ${env:archiveName} ${env:APP_NAME}.exe ${env:REPO_NAME}
$name = ${env:archiveName}
echo "packageName=$name" >> $env:GITHUB_OUTPUT
@ -511,24 +437,13 @@ jobs:
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}.zip
asset_name: ${{ env.fileName }}_${{ github.ref_name }}_${{ matrix.qt_arch }}_Qt${{ matrix.qt_ver }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.zip
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.QT_ARCH_WIN_MSVC }}_Qt${{ env.QT_VERSION }}_shared_${{ env.RELEASE_OR_NIGHTLY }}.zip
tag: ${{ github.ref }}
overwrite: true
build-win-msvc-static:
name: Windows MSVC (Static Library)
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
include:
- qt_ver: ${{ env.QT_VERSION }}
qt_arch: win64_msvc2019_64
msvc_arch: x64
qt_arch_install: msvc2019_64
env:
targetName: ${{ env.APP_NAME }}.exe
fileName: ${{ env.APP_NAME }}
runs-on: windows-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
@ -543,19 +458,20 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ matrix.qt_ver }}
arch: ${{ matrix.qt_arch }}
version: ${{ env.QT_VERSION }}
arch: ${{ env.QT_ARCH_WIN_MSVC }}
modules: ${{ env.QT_MODULES }}
tools: ${{ env.QT_MSVC_TOOLS }}
- name: msvc-build
id: build
shell: cmd
run: |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }}
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ env.QT_MSVC_ARCH }}
mkdir build
cd build
cmake -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:\a\${{ env.REPO_NAME }}\Qt\${{ matrix.qt_ver }}\msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
cmake --build . --target all --config Release --parallel
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe -DCMAKE_MESSAGE_LOG_LEVEL=STATUS -DCMAKE_PREFIX_PATH=D:/a/${{ env.REPO_NAME }}/Qt/${{ env.QT_VERSION }}/msvc2019_64 -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DCMAKE_BUILD_TYPE=Release -D${{ env.REPO_NAME }}_BUILD_STATIC_LIB=ON -GNinja ..
${{ env.Qt6_DIR }}\..\..\Tools\CMake_64\bin\cmake.exe --build . --target all --config Release --parallel
echo winSdkDir=%WindowsSdkDir% >> %GITHUB_ENV%
echo winSdkVer=%WindowsSdkVersion% >> %GITHUB_ENV%
echo vcToolsInstallDir=%VCToolsInstallDir% >> %GITHUB_ENV%
@ -564,11 +480,11 @@ jobs:
- name: package
id: package
env:
archiveName: ${{ env.fileName }}_${{ matrix.qt_arch }}_${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}
msvcArch: ${{ matrix.msvc_arch }}
archiveName: ${{ env.APP_NAME }}_${{ env.QT_ARCH_WIN_MSVC }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}
msvcArch: ${{ env.QT_MSVC_ARCH }}
shell: pwsh
run: |
& scripts\windows-publish.ps1 ${env:archiveName} ${env:targetName}
& scripts\windows-publish.ps1 ${env:archiveName} ${env:APP_NAME}.exe ${env:REPO_NAME}
$name = ${env:archiveName}
echo "packageName=$name" >> $env:GITHUB_OUTPUT
@ -583,6 +499,6 @@ jobs:
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ${{ steps.package.outputs.packageName }}.zip
asset_name: ${{ env.fileName }}_${{ github.ref_name }}_${{ matrix.qt_arch }}_Qt${{ matrix.qt_ver }}_static_${{ env.RELEASE_OR_NIGHTLY }}.zip
asset_name: ${{ env.APP_NAME }}_${{ github.ref_name }}_${{ env.QT_ARCH_WIN_MSVC }}_Qt${{ env.QT_VERSION }}_static_${{ env.RELEASE_OR_NIGHTLY }}.zip
tag: ${{ github.ref }}
overwrite: true

View File

@ -1,12 +1,7 @@
[CmdletBinding()]
param (
[string] $archiveName, [string] $targetName
[string] $archiveName, [string] $APP_NAME, [string] $REPO_NAME
)
# 外部环境变量包括:
# archiveName: ${{ matrix.qt_ver }}-${{ matrix.qt_arch }}
# archiveName: 5.15.2-win64_mingw81
$scriptDir = $PSScriptRoot
$currentDir = Get-Location
@ -17,9 +12,9 @@ function Main() {
New-Item -ItemType Directory $archiveName
# 拷贝exe
Copy-Item D:\a\RibbonUI\RibbonUI\build\app\release\* $archiveName\ -Force -Recurse | Out-Null
Copy-Item D:\a\$REPO_NAME\$REPO_NAME\build\app\release\* $archiveName\ -Force -Recurse | Out-Null
# 拷贝依赖
windeployqt --qmldir . --plugindir $archiveName\plugins --no-translations --compiler-runtime $archiveName\$targetName
windeployqt --qmldir . --plugindir $archiveName\plugins --no-translations --compiler-runtime $archiveName\$APP_NAME
# 删除不必要的文件
$excludeList = @("*.qmlc", "*.ilk", "*.exp", "*.lib", "*.pdb")
Remove-Item -Path $archiveName -Include $excludeList -Recurse -Force
@ -27,8 +22,8 @@ function Main() {
Compress-Archive -Path $archiveName $archiveName'.zip'
}
if ($null -eq $archiveName || $null -eq $targetName) {
Write-Host "args missing, archiveName is" $archiveName ", targetName is" $targetName
if ($null -eq $archiveName || $null -eq $APP_NAME || $null -eq $REPO_NAME) {
Write-Host "args missing, archiveName is" $archiveName ", APP_NAME is" $APP_NAME ", REPO_NAME is" $REPO_NAME
return
}
Main

View File

@ -1,22 +1,7 @@
[CmdletBinding()]
param (
[string] $archiveName, [string] $targetName
[string] $archiveName, [string] $APP_NAME, [string] $REPO_NAME
)
# 外部环境变量包括:
# archiveName: ${{ matrix.qt_ver }}-${{ matrix.qt_arch }}
# winSdkDir: ${{ steps.build.outputs.winSdkDir }}
# winSdkVer: ${{ steps.build.outputs.winSdkVer }}
# vcToolsInstallDir: ${{ steps.build.outputs.vcToolsInstallDir }}
# vcToolsRedistDir: ${{ steps.build.outputs.vcToolsRedistDir }}
# msvcArch: ${{ matrix.msvc_arch }}
# winSdkDir: C:\Program Files (x86)\Windows Kits\10\
# winSdkVer: 10.0.19041.0\
# vcToolsInstallDir: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.28.29333\
# vcToolsRedistDir: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Redist\MSVC\14.28.29325\
# archiveName: 5.9.9-win32_msvc2015
# msvcArch: x86
$scriptDir = $PSScriptRoot
$currentDir = Get-Location
@ -27,9 +12,9 @@ function Main() {
New-Item -ItemType Directory $archiveName
# 拷贝exe
Copy-Item D:\a\RibbonUI\RibbonUI\build\app\release\* $archiveName\ -Force -Recurse | Out-Null
Copy-Item D:\a\$REPO_NAME\$REPO_NAME\build\app\release\* $archiveName\ -Force -Recurse | Out-Null
# 拷贝依赖
windeployqt --qmldir . --plugindir $archiveName\plugins --no-translations --compiler-runtime $archiveName\$targetName
windeployqt --qmldir . --plugindir $archiveName\plugins --no-translations --compiler-runtime $archiveName\$APP_NAME
# 删除不必要的文件
$excludeList = @("*.qmlc", "*.ilk", "*.exp", "*.lib", "*.pdb")
Remove-Item -Path $archiveName -Include $excludeList -Recurse -Force
@ -43,8 +28,8 @@ function Main() {
Compress-Archive -Path $archiveName $archiveName'.zip'
}
if ($null -eq $archiveName || $null -eq $targetName) {
Write-Host "args missing, archiveName is" $archiveName ", targetName is" $targetName
if ($null -eq $archiveName || $null -eq $APP_NAME || $null -eq $REPO_NAME) {
Write-Host "args missing, archiveName is" $archiveName ", APP_NAME is" $APP_NAME ", REPO_NAME is" $REPO_NAME
return
}
Main