Trying to fix windows

This commit is contained in:
Shaun Reed 2023-01-21 08:01:13 -05:00
parent 48719412f2
commit 910770c565
10 changed files with 128 additions and 96 deletions

View File

@ -10,14 +10,15 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ubuntu-latest, windows-latest, macos-latest] # os: [ubuntu-latest, windows-latest, macos-latest]
os: [windows-latest]
include: include:
- os: ubuntu-latest # - os: ubuntu-latest
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/" # cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
- os: windows-latest - os: windows-latest
cmake: -DCMAKE_PREFIX_PATH="D:/a/qtk/qtk/Qt/6.5.0/mingw81_64/" cmake: -DCMAKE_PREFIX_PATH="D:/a/qtk/qtk/Qt/6.5.0/mingw81_64/"
- os: macos-latest # - os: macos-latest
cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/" # cmake: -DCMAKE_PREFIX_PATH="/home/runner/work/qtk/Qt/6.5.0/gcc_64/"
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
@ -35,27 +36,43 @@ jobs:
args: install pkgconfiglite --checksum e87b5ea3c9142256af60f2d5b917aa63b571e6a0 --checksum-type sha1 args: install pkgconfiglite --checksum e87b5ea3c9142256af60f2d5b917aa63b571e6a0 --checksum-type sha1
- name: Build Qtk - name: Build Qtk
if: matrix.os == 'windows-latest'
shell: bash shell: bash
run: | run: |
cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON -DQTK_DEBUG=OFF
cmake --build build/ -- -j $(nproc) cmake --build build/ --config Release
- name: Build Qtk
if: matrix.os != 'windows-latest'
shell: bash
run: |
cmake -B build/ ${{ matrix.cmake }} -DQTK_UPDATE_SUBMODULES=ON -DQTK_DEBUG=OFF
cmake --build build/ --config Release -- -j $(nproc)
- name: Install Qtk - name: Install Qtk
shell: bash shell: bash
run: | run: |
cmake --install build/ cmake --install build/ --config Release
- uses: actions/upload-artifact@v3 # - uses: actions/upload-artifact@v3
if: always() # if: always()
with: # with:
name: qtk-${{ matrix.os }} # name: qtk-${{ matrix.os }}
path: install/* # path: install/*
- name: Package Qtk - name: Package Qtk
if: matrix.os == 'windows-latest'
shell: bash shell: bash
run: | run: |
cd build/ cd build/
cmake --build . --target package -- -j $(nproc) cmake --build . --target package --config Release
- name: Package Qtk
if: matrix.os != 'windows-latest'
shell: bash
run: |
cd build/
cmake --build . --target package --config Release -- -j $(nproc)
# - name: Package Qtk Sources # - name: Package Qtk Sources
# if: matrix.os != 'macos-latest' # if: matrix.os != 'macos-latest'
@ -63,13 +80,20 @@ jobs:
# run: | # run: |
# cmake --build build/ --target package_source # cmake --build build/ --target package_source
- uses: actions/upload-artifact@v3
if: always()
with:
name: qtk-packages-${{ matrix.os }}
path: |
build/_CPack_Packages/win64/NSIS/
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
if: always() if: always()
with: with:
name: qtk-packages-${{ matrix.os }} name: qtk-packages-${{ matrix.os }}
path: | path: |
build/packages/ build/packages/
!build/packages/_CPack_Packages/* !build/packages/_cpack_packages/*
Build-Qtk-Assimp-Targets: Build-Qtk-Assimp-Targets:
strategy: strategy:
@ -104,9 +128,18 @@ jobs:
sudo apt install libassimp-dev sudo apt install libassimp-dev
- name: Build Qtk - name: Build Qtk
if: matrix.os == 'windows-latest'
shell: bash shell: bash
run: | run: |
cmake -B build/ ${{ matrix.cmake }} && cmake --build build/ -- -j $(nproc) cmake -B build/ ${{ matrix.cmake }} -DQTK_DEBUG=OFF
cmake --build build/ --config Release
- name: Build Qtk
if: matrix.os != 'windows-latest'
shell: bash
run: |
cmake -B build/ ${{ matrix.cmake }} -DQTK_DEBUG=OFF
cmake --build build/ --config Release -- -j $(nproc)
# TODO: Enable with tag only when done testing # TODO: Enable with tag only when done testing
# Release-Qtk: # Release-Qtk:

View File

@ -22,12 +22,11 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#set(CMAKE_MACOSX_BUNDLE ON) set(CMAKE_MACOSX_BUNDLE ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
if(MSVC) if(WIN32)
set(CMAKE_COMPILE_WARNING_AS_ERROR OFF) set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)
add_compile_options(-warnnotaserror)
add_compile_options(/wd4131 /wd4127) add_compile_options(/wd4131 /wd4127)
endif() endif()
@ -58,6 +57,12 @@ option(
OFF OFF
) )
if(NOT QTK_DEBUG)
set(CMAKE_BUILD_TYPE Release)
else()
set(CMAKE_BUILD_TYPE Debug)
endif()
set(QT_DIR "$ENV{HOME}/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. # Qt Designer will look in different locations if WIN / Unix.
@ -116,10 +121,11 @@ if(NOT Qt6_FOUND)
endif() endif()
# Find Assimp # Find Assimp
set(ASSIMP_BUILD_TESTS OFF) set(ASSIMP_BUILD_TESTS OFF CACHE STRING "Do not build assimp tests." FORCE)
if(QTK_UPDATE_SUBMODULES) if(QTK_UPDATE_SUBMODULES)
message(STATUS "[Qtk] Updating submodules...") message(STATUS "[Qtk] Updating submodules...")
set(ASSIMP_INSTALL OFF) set(ASSIMP_INSTALL OFF CACHE STRING "Use assimp as a submodule." FORCE)
set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE STRING "No warnings as errors." FORCE)
submodule_update("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/") submodule_update("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/") add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/extern/assimp/assimp/")
else() else()

View File

@ -47,12 +47,14 @@ if(NOT TARGET Qtk::qtk_library)
endif() endif()
# Print all QTK variables # Print all QTK variables
get_cmake_property(VAR_NAMES VARIABLES) if (NOT Qtk_IS_TOP_LEVEL)
list(FILTER VAR_NAMES INCLUDE REGEX "^Q[tT][kK]_.*$") get_cmake_property(VAR_NAMES VARIABLES)
list(SORT VAR_NAMES) list(FILTER VAR_NAMES INCLUDE REGEX "^Q[tT][kK]_.*$")
foreach(VAR_NAME ${VAR_NAMES}) list(SORT VAR_NAMES)
message(STATUS "[Qtk] ${VAR_NAME}=${${VAR_NAME}}") foreach(VAR_NAME ${VAR_NAMES})
endforeach() message(STATUS "[Qtk] ${VAR_NAME}=${${VAR_NAME}}")
endforeach()
endif()
find_package(Qt6 COMPONENTS Core Widgets OpenGLWidgets REQUIRED) find_package(Qt6 COMPONENTS Core Widgets OpenGLWidgets REQUIRED)

View File

@ -42,10 +42,11 @@ set(CPACK_PACKAGE_VENDOR "Shaun Reed")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Qt OpenGL 3D graphics library.") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Qt OpenGL 3D graphics library.")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/shaunrd0/qtk") set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/shaunrd0/qtk")
set(CPACK_SOURCE_IGNORE_FILES build*;install;\.git;\.github;\.idea) set(CPACK_SOURCE_IGNORE_FILES build*;install;\.git;\.github;\.idea)
set(CPACK_PACKAGE_DIRECTORY packages/) #set(CPACK_PACKAGE_DIRECTORY packages/)
set(CPACK_PACKAGE_CONTACT "shaunreed.com") set(CPACK_PACKAGE_CONTACT "shaunreed.com")
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/icon.png") set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/resources/icon.png")
set(CPACK_THREADS 0) set(CPACK_THREADS 0)
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Qtk")
# Debian # Debian
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_PACKAGE_HOMEPAGE_URL}) set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_PACKAGE_HOMEPAGE_URL})

View File

@ -39,13 +39,13 @@ install(
) )
# Install plugin library to Qt Creator for Designer plugin integration. # Install plugin library to Qt Creator for Designer plugin integration.
install( #install(
TARGETS qtk_plugin_library # TARGETS qtk_plugin_library
EXCLUDE_FROM_ALL # EXCLUDE_FROM_ALL
LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
) #)
################################################################################ ################################################################################
# Qtk Widget Collection Plugin # Qtk Widget Collection Plugin
@ -66,13 +66,13 @@ install(
RUNTIME DESTINATION bin RUNTIME DESTINATION bin
) )
install( #install(
TARGETS qtk_collection # TARGETS qtk_collection
EXCLUDE_FROM_ALL # EXCLUDE_FROM_ALL
LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" # LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" # RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
) #)
################################################################################ ################################################################################
# Final Qtk Application # Final Qtk Application
@ -123,36 +123,36 @@ qt_generate_deploy_app_script(
) )
install(SCRIPT ${QTK_DEPLOY_SCRIPT}) install(SCRIPT ${QTK_DEPLOY_SCRIPT})
if(WIN32) #if(WIN32)
get_target_property(_qt6_qmake_location Qt6::qmake IMPORTED_LOCATION) # get_target_property(_qt6_qmake_location Qt6::qmake IMPORTED_LOCATION)
execute_process( # execute_process(
COMMAND "${_qt6_qmake_location}" -query QT_INSTALL_PREFIX # COMMAND "${_qt6_qmake_location}" -query QT_INSTALL_PREFIX
RESULT_VARIABLE return_code # RESULT_VARIABLE return_code
OUTPUT_VARIABLE qt6_install_prefix # OUTPUT_VARIABLE qt6_install_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE # OUTPUT_STRIP_TRAILING_WHITESPACE
) # )
file(TO_NATIVE_PATH "${qt6_install_prefix}/bin" qt6_install_prefix) # file(TO_NATIVE_PATH "${qt6_install_prefix}/bin" qt6_install_prefix)
#
if(TARGET Qt6::windeployqt) # if(TARGET Qt6::windeployqt)
add_custom_command( # add_custom_command(
TARGET qtk_main # TARGET qtk_main
POST_BUILD # POST_BUILD
COMMAND set PATH=%PATH%$<SEMICOLON>${qt6_install_prefix} # 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>" # 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) # install(DIRECTORY "${CMAKE_BINARY_DIR}/windeployqt/" DESTINATION bin)
endif() # endif()
#
if(MSVC AND TARGET Qt6::qmake) # if(MSVC AND TARGET Qt6::qmake)
set(VSUSER_FILE "${CMAKE_CURRENT_BINARY_DIR}/qtk_main.vcxproj.user") # 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(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(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} "<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n")
file(APPEND ${VSUSER_FILE} " <PropertyGroup>\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>Path=$(SolutionDir)\\lib\\$(Configuration);${qt6_install_prefix};${assimp_bin};$(Path)\n")
file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>\n") # file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>\n")
file(APPEND ${VSUSER_FILE} " <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n") # file(APPEND ${VSUSER_FILE} " <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>\n")
file(APPEND ${VSUSER_FILE} " </PropertyGroup>\n") # file(APPEND ${VSUSER_FILE} " </PropertyGroup>\n")
file(APPEND ${VSUSER_FILE} "</Project>\n") # file(APPEND ${VSUSER_FILE} "</Project>\n")
endif() # endif()
endif() #endif()

View File

@ -42,9 +42,7 @@ QtkWidget::QtkWidget(QWidget * parent, const QString & name, Scene * scene) :
// Set the size of the depth bufer for glEnable(GL_DEPTH_TEST) // Set the size of the depth bufer for glEnable(GL_DEPTH_TEST)
format.setDepthBufferSize(16); format.setDepthBufferSize(16);
// If QTK_DEBUG is set, enable debug context // If QTK_DEBUG is set, enable debug context
#ifdef QTK_DEBUG
format.setOption(QSurfaceFormat::DebugContext); format.setOption(QSurfaceFormat::DebugContext);
#endif
setFormat(format); setFormat(format);
setFocusPolicy(Qt::ClickFocus); setFocusPolicy(Qt::ClickFocus);
} }
@ -73,7 +71,6 @@ void QtkWidget::initializeGL() {
connect(this, SIGNAL(frameSwapped()), this, SLOT(update())); connect(this, SIGNAL(frameSwapped()), this, SLOT(update()));
// Initialize OpenGL debug context // Initialize OpenGL debug context
#ifdef QTK_DEBUG
mDebugLogger = new QOpenGLDebugLogger(this); mDebugLogger = new QOpenGLDebugLogger(this);
if(mDebugLogger->initialize()) { if(mDebugLogger->initialize()) {
qDebug() << "GL_DEBUG Debug Logger" << mDebugLogger << "\n"; qDebug() << "GL_DEBUG Debug Logger" << mDebugLogger << "\n";
@ -82,7 +79,6 @@ void QtkWidget::initializeGL() {
SLOT(messageLogged(QOpenGLDebugMessage))); SLOT(messageLogged(QOpenGLDebugMessage)));
mDebugLogger->startLogging(); mDebugLogger->startLogging();
} }
#endif // QTK_DEBUG
printContextInformation(); printContextInformation();

View File

@ -156,7 +156,6 @@ namespace Qtk {
*/ */
void update(); void update();
#ifdef QTK_DEBUG
/** /**
* Called when the `messageLogged` signal is caught. * Called when the `messageLogged` signal is caught.
* See definition of initializeGL() * See definition of initializeGL()
@ -164,7 +163,6 @@ namespace Qtk {
* @param msg The message logged. * @param msg The message logged.
*/ */
void messageLogged(const QOpenGLDebugMessage & msg); void messageLogged(const QOpenGLDebugMessage & msg);
#endif
private: private:
/************************************************************************* /*************************************************************************
@ -181,20 +179,16 @@ namespace Qtk {
*/ */
static void updateCameraInput(); static void updateCameraInput();
#ifdef QTK_DEBUG
/** /**
* Prints OpenGL context information at start of debug session. * Prints OpenGL context information at start of debug session.
*/ */
void printContextInformation(); void printContextInformation();
#endif
/************************************************************************* /*************************************************************************
* Private Members * Private Members
************************************************************************/ ************************************************************************/
#ifdef QTK_DEBUG
QOpenGLDebugLogger * mDebugLogger; QOpenGLDebugLogger * mDebugLogger;
#endif
Qtk::Scene * mScene; Qtk::Scene * mScene;
Qtk::DebugConsole * mConsole; Qtk::DebugConsole * mConsole;
bool mConsoleActive = false; bool mConsoleActive = false;

View File

@ -18,7 +18,7 @@ namespace Ui {
} }
namespace Qtk { namespace Qtk {
class QDESIGNER_WIDGET_EXPORT ToolBox : public QDockWidget { class ToolBox : public QDockWidget {
Q_OBJECT Q_OBJECT
public: public:

View File

@ -22,7 +22,7 @@ namespace Ui {
} }
namespace Qtk { namespace Qtk {
class QDESIGNER_WIDGET_EXPORT TreeView : public QDockWidget { class TreeView : public QDockWidget {
Q_OBJECT Q_OBJECT
public: public:

View File

@ -69,9 +69,9 @@ target_link_libraries(
) )
if(QTK_UPDATE_SUBMODULES OR NOT ASSIMP_NEW_INTERFACE) if(QTK_UPDATE_SUBMODULES OR NOT ASSIMP_NEW_INTERFACE)
target_link_libraries(qtk_library PUBLIC assimp) target_link_libraries(qtk_library PRIVATE assimp)
elseif(ASSIMP_NEW_INTERFACE) elseif(ASSIMP_NEW_INTERFACE)
target_link_libraries(qtk_library PUBLIC assimp::assimp) target_link_libraries(qtk_library PRIVATE assimp::assimp)
endif() endif()
if(WIN32) if(WIN32)
@ -91,10 +91,10 @@ install(
) )
## Install qtk_library to Qt Designer to support widget plugins. ## Install qtk_library to Qt Designer to support widget plugins.
install( #install(
TARGETS qtk_library # TARGETS qtk_library
EXCLUDE_FROM_ALL # EXCLUDE_FROM_ALL
LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" # RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
) #)