Test packaging

This commit is contained in:
Shaun Reed 2023-01-14 19:01:34 -05:00
parent cf433ad7fc
commit 2d2fe6bea8
7 changed files with 140 additions and 50 deletions

View File

@ -10,14 +10,15 @@ jobs:
strategy:
fail-fast: false
matrix:
# os: [ubuntu-latest, windows-latest]
os: [ubuntu-latest, windows-latest, macos-latest]
include:
- os: ubuntu-latest
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/"
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
- os: windows-latest
cmake: -DCMAKE_PREFIX_PATH="D:/a/qtk/qtk/Qt/6.3.1/mingw81_64/"
cmake: -DCMAKE_PREFIX_PATH="D:/a/qtk/qtk/Qt/6.5.0/mingw81_64/"
- os: macos-latest
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/"
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
runs-on: ${{ matrix.os }}
steps:
@ -26,7 +27,7 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: '6.3.1'
version: '6.5.0'
- name: Chocolatey Action
if: matrix.os == 'windows-latest'
@ -37,8 +38,35 @@ jobs:
- name: Build Qtk
shell: bash
run: |
cmake -S . -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON && cmake --build build/ \
--target qtk-main
cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON
cmake --build build/
- name: Package Qtk
shell: bash
run: |
cmake --build build/ --target package
- name: Package Qtk Sources
shell: bash
run: |
cmake --build build/ --target package_source
- uses: actions/upload-artifact@v3
with:
name: qtk-packages-${{ matrix.os }}
path: |
build/packages/
!build/packages/_CPack_Packages/*
- name: Install Qtk
shell: bash
run: |
cmake --install build/
- uses: actions/upload-artifact@v3
with:
name: qtk-${{ matrix.os }}
path: install/*
Build-Qtk-Assimp-Targets:
strategy:
@ -47,9 +75,9 @@ jobs:
os: [ubuntu-latest, macos-latest]
include:
- os: ubuntu-latest
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/"
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
- os: macos-latest
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.3.1/gcc_64/" -DASSIMP_NEW_INTERFACE=ON
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/" -DASSIMP_NEW_INTERFACE=ON
runs-on: ${{ matrix.os }}
steps:
@ -58,7 +86,7 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
version: '6.3.1'
version: '6.5.0'
- name: Install Assimp MacOS
if: matrix.os == 'macos-latest'
@ -75,5 +103,49 @@ jobs:
- name: Build Qtk
shell: bash
run: |
cmake -S . -B build/ ${{ matrix.cmake }} && cmake --build build/ \
--target qtk-main
cmake -B build/ ${{ matrix.cmake }} && cmake --build build/ --target qtk-main
# TODO: Enable with tag only when done testing
# Release-Qtk:
# needs: Build-Qtk
# if: "always()"
# strategy:
# fail-fast: false
# matrix:
# os: [ubuntu-latest, windows-latest, macos-latest]
# include:
# - os: ubuntu-latest
# cqt: CQtDeployer.deb
# url: https://github.com/QuasarApp/CQtDeployer/releases/download/v1.6.2277/CQtDeployer_1.6.2277.ecc6eed_Linux_x86_64.deb
# qmake: /home/runner/work/qtk/Qt/6.5.0/gcc_64/bin/qmake
# - os: windows-latest
# cqt: CQtDeployer.exe
# url: https://github.com/QuasarApp/CQtDeployer/releases/download/v1.6.2277/CQtDeployer_1.6.2277.ecc6eed_Windows_AMD64.exe
# qmake: D:/a/qtk/qtk/Qt/6.5.0/mingw81_64/bin/qmake
# - os: macos-latest
# cqt: CQtDeployer.run
# url: https://github.com/QuasarApp/CQtDeployer/releases/download/v1.6.2277/CQtDeployer_1.6.2277.ecc6eed_Linux_x86_64.run
# qmake: /home/runner/work/qtk/Qt/6.5.0/gcc_64/bin/qmake
# runs-on: ${{ matrix.os }}
#
# steps:
# - uses: actions/download-artifact@v3
# with:
# name: qtk-${{ matrix.os }}
#
# - name: Install Qt
# uses: jurplel/install-qt-action@v2
# with:
# version: '6.5.0'
#
# - name: Package Qtk
# shell: bash
# run: |
# wget -O ${{ matrix.cqt }} ${{ matrix.url }}
# apt install -y ./${{ matrix.cqt }}
# cqtdeployer -bin qtk-main -qmake ${{ matrix.qmake }}
#
# - uses: actions/upload-artifact@v3
# with:
# name: qtk-installer-${{ matrix.os }}
# path: DistributionKit/

View File

@ -55,7 +55,7 @@ option(
OFF
)
set(QT_DIR "$ENV{HOME}/Code/Clones/Qt/" CACHE PATH "Path to Qt6")
set(QT_DIR "$ENV{HOME}/Qt/" CACHE PATH "Path to Qt6")
# Qt Designer will look in different locations if WIN / Unix.
# These paths are for using Qt Designer integrated within Qt Creator.
@ -70,7 +70,7 @@ else()
endif()
# This should be set to your Qt6 installation directory.
set(QT_INSTALL_DIR "${QT_DIR}/6.3.1/gcc_64/" CACHE PATH "Path to Qt6 install")
set(QT_INSTALL_DIR "${QT_DIR}/6.5.0/gcc_64" CACHE PATH "Path to Qt6 install")
# Point CMAKE_PREFIX_PATH to Qt6 install directory
# If Qtk is built within Qt Creator this is not required.
list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}")
@ -98,6 +98,7 @@ endforeach()
################################################################################
# Find Qt
find_package(Qt6 COMPONENTS Core UiPlugin OpenGLWidgets)
qt_standard_project_setup()
if(NOT Qt6_FOUND)
message(
SEND_ERROR "[Qtk] Error: Unable to find Qt6 at CMAKE_PREFIX_PATH: "
@ -127,37 +128,3 @@ endif()
# Qtk
################################################################################
add_subdirectory(src)
if(WIN32)
get_target_property(_qt6_qmake_location Qt6::qmake IMPORTED_LOCATION)
execute_process(
COMMAND "${_qt6_qmake_location}" -query QT_INSTALL_PREFIX
RESULT_VARIABLE return_code
OUTPUT_VARIABLE qt6_install_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE
)
file(TO_NATIVE_PATH "${qt6_install_prefix}/bin" qt6_install_prefix)
if(TARGET Qt6::windeployqt)
add_custom_command(
TARGET qtk-main
POST_BUILD
COMMAND set PATH=%PATH%$<SEMICOLON>${qt6_install_prefix}
COMMAND Qt6::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$<TARGET_FILE_DIR:qtk-main>/$<TARGET_FILE_NAME:qtk-main>"
)
install(DIRECTORY "${CMAKE_BINARY_DIR}/windeployqt/" DESTINATION bin)
endif()
if(MSVC AND TARGET Qt6::qmake)
set(VSUSER_FILE "${CMAKE_CURRENT_BINARY_DIR}/qtk-main.vcxproj.user")
file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/extern/assimp/assimp/bin" assimp_bin)
file(WRITE ${VSUSER_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
file(APPEND ${VSUSER_FILE} "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n")
file(APPEND ${VSUSER_FILE} " <PropertyGroup>\n")
file(APPEND ${VSUSER_FILE} " <LocalDebuggerEnvironment>Path=$(SolutionDir)\\lib\\$(Configuration);${qt6_install_prefix};${assimp_bin};$(Path)\n")
file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>\n")
file(APPEND ${VSUSER_FILE} " <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n")
file(APPEND ${VSUSER_FILE} " </PropertyGroup>\n")
file(APPEND ${VSUSER_FILE} "</Project>\n")
endif()
endif()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 KiB

After

Width:  |  Height:  |  Size: 316 KiB

View File

@ -41,4 +41,11 @@ set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VENDOR "Shaun Reed")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Qt OpenGL 3D graphics library.")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/shaunrd0/qtk")
set(CPACK_SOURCE_IGNORE_FILES build;install;\.git;\.github;\.idea)
set(CPACK_PACKAGE_DIRECTORY packages/)
if(WIN32)
set(CPACK_SOURCE_GENERATOR ZIP)
else()
set(CPACK_SOURCE_GENERATOR TGZ)
endif()
include(CPack)

View File

@ -11,13 +11,14 @@
# Create a library of widgets used to build Qtk GUI
set(
QTK_PLUGIN_LIBRARY_SOURCES
qtkwidget.cpp qtkwidget.h
qtkwidget.cpp
debugconsole.cpp debugconsole.ui
toolbox.cpp toolbox.ui
treeview.cpp treeview.ui
)
set(
QTK_PLUGIN_LIBRARY_HEADERS
qtkwidget.h
debugconsole.h
toolbox.h
treeview.h
@ -102,3 +103,44 @@ install(
RUNTIME DESTINATION bin
LIBRARY DESTINATION bin/lib
)
qt_generate_deploy_app_script(
TARGET qtk-main
FILENAME_VARIABLE deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})
if(WIN32)
get_target_property(_qt6_qmake_location Qt6::qmake IMPORTED_LOCATION)
execute_process(
COMMAND "${_qt6_qmake_location}" -query QT_INSTALL_PREFIX
RESULT_VARIABLE return_code
OUTPUT_VARIABLE qt6_install_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE
)
file(TO_NATIVE_PATH "${qt6_install_prefix}/bin" qt6_install_prefix)
if(TARGET Qt6::windeployqt)
add_custom_command(
TARGET qtk-main
POST_BUILD
COMMAND set PATH=%PATH%$<SEMICOLON>${qt6_install_prefix}
COMMAND Qt6::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$<TARGET_FILE_DIR:qtk-main>/$<TARGET_FILE_NAME:qtk-main>"
)
install(DIRECTORY "${CMAKE_BINARY_DIR}/windeployqt/" DESTINATION bin)
endif()
if(MSVC AND TARGET Qt6::qmake)
set(VSUSER_FILE "${CMAKE_CURRENT_BINARY_DIR}/qtk-main.vcxproj.user")
file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/extern/assimp/assimp/bin" assimp_bin)
file(WRITE ${VSUSER_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
file(APPEND ${VSUSER_FILE} "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n")
file(APPEND ${VSUSER_FILE} " <PropertyGroup>\n")
file(APPEND ${VSUSER_FILE} " <LocalDebuggerEnvironment>Path=$(SolutionDir)\\lib\\$(Configuration);${qt6_install_prefix};${assimp_bin};$(Path)\n")
file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>\n")
file(APPEND ${VSUSER_FILE} " <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n")
file(APPEND ${VSUSER_FILE} " </PropertyGroup>\n")
file(APPEND ${VSUSER_FILE} "</Project>\n")
endif()
endif()

View File

@ -6,8 +6,8 @@
## Contact: shaunrd0@gmail.com | URL: www.shaunreed.com | GitHub: shaunrd0 ##
##############################################################################*/
#include "examplescene.h"
#include "qtkmainwindow.h"
#include "examplescene.h"
#include "ui_qtkmainwindow.h"
MainWindow * MainWindow::mainWindow_ = Q_NULLPTR;

View File

@ -27,7 +27,9 @@
* This cannot be defined within any namespace, but can be called by ctors.
* See object.h for example.
*/
inline void initResources() { Q_INIT_RESOURCE(resources); }
inline void initResources() {
Q_INIT_RESOURCE(resources);
}
namespace Qtk {
/**