From 5e886672da0c05b5bf158913026b217b6ae891e8 Mon Sep 17 00:00:00 2001 From: Shaun Reed Date: Sun, 29 Jan 2023 13:26:25 -0500 Subject: [PATCH] Packaging / install updates --- .github/workflows/all-builds.yml | 2 +- CMakeLists.txt | 93 ++++++++++++++--------- README.md | 80 +++++++++++++++----- src/CMakeLists.txt | 125 ++++++++++++++++++++++++++++--- src/app/CMakeLists.txt | 68 +---------------- src/qtk/CMakeLists.txt | 23 +----- 6 files changed, 240 insertions(+), 151 deletions(-) diff --git a/.github/workflows/all-builds.yml b/.github/workflows/all-builds.yml index 28c5985..107e2e2 100644 --- a/.github/workflows/all-builds.yml +++ b/.github/workflows/all-builds.yml @@ -92,7 +92,7 @@ jobs: name: qtk-packages-${{ matrix.os }} path: | build/packages/ - !build/packages/_cpack_packages/* + !build/packages/_CPack_Packages/* Build-Qtk-Assimp-Targets: strategy: diff --git a/CMakeLists.txt b/CMakeLists.txt index cc37ce7..5acf1cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,12 +6,6 @@ ################################################################################ cmake_minimum_required(VERSION 3.23) -################################################################################ -# Includes -################################################################################ -include("${CMAKE_SOURCE_DIR}/cmake/include/git_submodule.cmake") -include(CMakePackageConfigHelpers) - ################################################################################ # Constants ################################################################################ @@ -40,15 +34,31 @@ project( LANGUAGES CXX C ) +################################################################################ +# Includes +################################################################################ +include("${CMAKE_SOURCE_DIR}/cmake/include/git_submodule.cmake") +include(CMakePackageConfigHelpers) +include(GNUInstallDirs) + ################################################################################ # Options ################################################################################ -option(QTK_DEBUG "Enable debugger" ON) -option(QTK_BUILD_GUI "Build the Qtk desktop application" ON) -option(QTK_BUILD_EXAMPLE "Build the Qtk example desktop application" ON) +option(QTK_DEBUG "Enable debugger" OFF) option(QTK_UPDATE_SUBMODULES "Update external project (assimp) submodule" OFF) +option(QTK_INSTALL_GUI "Build the Qtk desktop application" ON) +option(QTK_INSTALL_LIB "Install libqtk to CMAKE_INSTALL_PREFIX path." ON) +option(QTK_INSTALL_PLUGINS "Install Qtk plugin collection to Qt Creator." OFF) +option(QTK_BUILD_EXAMPLE "Build the Qtk example desktop application" ON) +option(QTK_ENABLE_CCACHE "Enable ccache" ON) + +if (QTK_ENABLE_CCACHE) + set(CMAKE_CXX_COMPILER_LAUNCHER ccache) +endif() + # Install Qtk for use within Qt Creator projects only, instead of system-wide. -option(QTK_PREFIX_QTCREATOR "Install Qtk to Qt Creator." OFF) +option(QTK_PREFIX_QTCREATOR "Install Qtk to Qt Creator. Untested." OFF) + # Option for bringing your own assimp installation; Otherwise not needed # + If assimp is available system-wide we can just set QTK_UPDATE_SUBMODULES OFF option( @@ -63,40 +73,44 @@ else() set(CMAKE_BUILD_TYPE Debug) endif() -set(QT_DIR "$ENV{HOME}/Qt/" CACHE PATH "Path to Qt6") +# This should be set to your Qt6 installation directory. +set(QT_INSTALL_DIR "$ENV{HOME}/Qt/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}") +# TODO: Remove if not using sdlibdeps. +#set(CMAKE_INSTALL_RPATH "${QT_INSTALL_DIR}/lib") +if (QTK_PREFIX_QTCREATOR) + # TODO: This might be a bit strange and needs more testing. + set(CMAKE_INSTALL_PREFIX "${QT_INSTALL_DIR}") +endif() +set( + QT_CREATOR_DIR + "${QT_INSTALL_DIR}/../../Tools/QtCreator" + CACHE PATH "Qt Creator path used to install Qtk plugins for Qt Designer." +) # Qt Designer will look in different locations if WIN / Unix. # These paths are for using Qt Designer integrated within Qt Creator. # Standalone Qt Designer may use different paths. if (WIN32) # These paths may be different on windows. I have not tested this. - set(QT_PLUGIN_INSTALL_DIR "${QT_DIR}/Tools/QtCreator/bin/plugins/designer") - set(QT_PLUGIN_LIBRARY_DIR "${QT_DIR}/Tools/QtCreator/lib/Qt/lib") + set(QT_PLUGIN_INSTALL_DIR "${QT_CREATOR_DIR}/bin/plugins/designer") + set(QT_PLUGIN_LIBRARY_DIR "${QT_CREATOR_DIR}/lib/Qt/lib") else() - set(QT_PLUGIN_INSTALL_DIR "${QT_DIR}/Tools/QtCreator/lib/Qt/plugins/designer") - set(QT_PLUGIN_LIBRARY_DIR "${QT_DIR}/Tools/QtCreator/lib/Qt/lib") + set(QT_PLUGIN_INSTALL_DIR "${QT_CREATOR_DIR}/lib/Qt/plugins/designer") + set(QT_PLUGIN_LIBRARY_DIR "${QT_CREATOR_DIR}/lib/Qt/lib") endif() - -# This should be set to your Qt6 installation directory. -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}") - set(QTK_PLUGIN_LIBRARY_DIR "${QT_PLUGIN_LIBRARY_DIR}") set(QTK_PLUGIN_INSTALL_DIR "${QT_PLUGIN_INSTALL_DIR}") -set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install") -if (QTK_PREFIX_QTCREATOR) - # TODO: This might be a bit strange and needs more testing. - set(CMAKE_INSTALL_PREFIX "${QT_INSTALL_DIR}") -endif() + message(STATUS "[Qtk] CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}") set(QTK_RESOURCES "${CMAKE_SOURCE_DIR}/resources") set(QTK_OSX_ICONS ${CMAKE_SOURCE_DIR}/resources/icons/osx/kilroy.icns) # Print all QTK options and their values. get_cmake_property(VAR_NAMES VARIABLES) -list(FILTER VAR_NAMES INCLUDE REGEX "^QTK_.*$") +list(FILTER VAR_NAMES INCLUDE REGEX "^Q[tT][kK]_.*$") list(SORT VAR_NAMES) foreach(VAR_NAME ${VAR_NAMES}) message(STATUS "[Qtk] ${VAR_NAME}=${${VAR_NAME}}") @@ -120,15 +134,26 @@ if(NOT Qt6_FOUND) ) endif() -# Find Assimp -set(ASSIMP_BUILD_TESTS OFF CACHE STRING "Do not build assimp tests." FORCE) -set(ASSIMP_INSTALL ON CACHE STRING "Use assimp as a submodule." FORCE) -set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE STRING "No warnings as errors." FORCE) -set(BUILD_SHARED_LIBS OFF CACHE STRING "Build static assimp libs" FORCE) +# Find Assimp. if(QTK_UPDATE_SUBMODULES) + # Required to statically link. + add_compile_options(-fPIC) + set(BUILD_SHARED_LIBS OFF CACHE STRING "Build static assimp libs" FORCE) + set(ASSIMP_BUILD_ZLIB ON CACHE STRING "Build Zlib with assimp." FORCE) + set( + ASSIMP_INSTALL + OFF CACHE STRING "Disable to use assimp as a submodule." + FORCE + ) + set(ASSIMP_NO_EXPORT ON CACHE STRING "Disable to export assimp." FORCE) + set(ASSIMP_WARNINGS_AS_ERRORS OFF CACHE STRING "No warnings as errors." FORCE) + set(ASSIMP_BUILD_TESTS OFF CACHE STRING "Do not build assimp tests." FORCE) message(STATUS "[Qtk] Updating submodules...") 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/" + EXCLUDE_FROM_ALL + ) else() find_package(assimp REQUIRED) endif() diff --git a/README.md b/README.md index 68e7956..751424a 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,15 @@ This project has been ported to **Qt 6.5.0**, which is not yet available in Ubun To run this project, you will *need* to install [Qt6 Open Source Binaries](https://www.qt.io/download-qt-installer) for your system, **version 6.5.0** or later. Be sure to take note of the Qt6 installation directory, as we will need it to correctly set our `CMAKE_PREFIX_PATH` in the next steps. -#### Linux +#### Qtk GUI Once Qt6 is installed, to build and run `qtk` on Ubuntu - ```bash -sudo apt update -y && sudo apt install libassimp-dev cmake build-essential git +sudo apt update -y && sudo apt install libassimp-dev cmake build-essential git ccache git clone https://github.com/shaunrd0/qtk -cmake -DCMAKE_PREFIX_PATH=$HOME/Qt/6.3.1/gcc_64 -S qtk/ -B qtk/build/ && cmake --build qtk/build/ -j $(nproc --ignore=2) --target qtk-main -./qtk/build/qtk-main +cmake -S qtk/ -B qtk/build/ -DCMAKE_PREFIX_PATH=$HOME/Qt/6.5.0/gcc_64 +cmake --build qtk/build/ -j $(nproc --ignore=2) +./qtk/build/bin/qtk-main ``` By default, the build will not initialize Assimp as a git submodule and build from source. @@ -54,10 +55,9 @@ Building using this option will fetch and build Assimp for us, but builds will t Using `-DQTK_UPDATE_SUBMODULES=ON` supports providing assimp on cross-platform builds (Windows / Mac / Linux) and may be easier to configure. ```bash -sudo apt update -y && sudo apt install freeglut3-dev libassimp-dev cmake build-essential git -git clone https://gitlab.com/shaunrd0/qtk -cmake -DQTK_UPDATE_SUBMODULES=ON -DCMAKE_PREFIX_PATH=$HOME/Qt/6.3.1/gcc_64 -S qtk/ -B qtk/build/ && cmake --build qtk/build/ -j $(nproc --ignore=2) --target qtk-main -./qtk/build/qtk-main +cmake -S qtk/ -B qtk/build/ -DQTK_UPDATE_SUBMODULES=ON -DCMAKE_PREFIX_PATH=$HOME/Qt/6.5.0/gcc_64 +cmake --build qtk/build/ -j $(nproc --ignore=2) +./qtk/build/bin/qtk-main ``` If any errors are encountered loading plugins, we can debug plugin loading by setting the following environment variable - @@ -66,14 +66,40 @@ If any errors are encountered loading plugins, we can debug plugin loading by se QT_DEBUG_PLUGINS=1 ./qtk-main ``` -#### Windows / MacOS +#### Qtk Library + +Qtk provides a simple library for working with QOpenGL. +We can install this library on a system path or a custom path and then set `CMAKE_PREFIX_PATH` to point to this location when building an application using libqtk. + +Below is an example of installing on a system path. -If you are building on **Windows / Mac** and bringing your own installation of Assimp, consider setting the `-DASSIMP_NEW_INTERFACE` build flag. ```bash -cmake -S qtk/ -B qtk/build/ -DASSIMP_NEW_INTERFACE=ON -DCMAKE_PREFIX_PATH=$HOME/Qt/6.3.1/gcc_64;/path/to/assimp/ && cmake --build qtk/build/ -j $(nproc --ignore=2) --target qtk-main +cmake -S qtk/ -B qtk/build/ -DCMAKE_PREFIX_PATH=$HOME/Qt/6.5.0/gcc_64 -DQTK_INSTALL_GUI=OFF -DQTK_INSTALL_PLUGINS=OFF +cmake --build qtk/build/ -j $(nproc --ignore=2) +sudo cmake --install . --prefix=/usr/local +-- Install configuration: "Release" +-- Installing: /usr/local/lib/cmake/Qtk/QtkConfig.cmake +-- Installing: /usr/local/lib/cmake/Qtk/QtkConfigVersion.cmake +-- Installing: /usr/local/lib/cmake/Qtk/QtkTargets.cmake +-- Installing: /usr/local/lib/cmake/Qtk/QtkTargets-release.cmake +-- Installing: /usr/local/lib/static/libqtk_library.a +-- Installing: /usr/local/include/qtk/camera3d.h +-- Installing: /usr/local/include/qtk/input.h +-- Installing: /usr/local/include/qtk/meshrenderer.h +-- Installing: /usr/local/include/qtk/model.h +-- Installing: /usr/local/include/qtk/modelmesh.h +-- Installing: /usr/local/include/qtk/object.h +-- Installing: /usr/local/include/qtk/qtkapi.h +-- Installing: /usr/local/include/qtk/qtkiostream.h +-- Installing: /usr/local/include/qtk/qtkiosystem.h +-- Installing: /usr/local/include/qtk/scene.h +-- Installing: /usr/local/include/qtk/shape.h +-- Installing: /usr/local/include/qtk/skybox.h +-- Installing: /usr/local/include/qtk/texture.h +-- Installing: /usr/local/include/qtk/transform3D.h ``` -### Qtk Plugin Collection +#### Qtk Plugin Collection This project defines a collection of widget plugins for use with Qt Designer. These plugins were used to build the interface for the Qtk desktop application. @@ -84,8 +110,8 @@ The widgets in the Qtk collection were created by implementing the [QDesignerCus To build and install the Qtk plugin collection - ```bash -cmake -S /path/to/qtk -B /path/to/qtk/build -DCMAKE_PREFIX_PATH=$HOME/Qt/6.3.1/gcc_64 -cmake --build /path/to/qtk/build --target qtk-collection +cmake -S /path/to/qtk -B /path/to/qtk/build -DCMAKE_PREFIX_PATH=$HOME/Qt/6.5.0/gcc_64 -DQTK_INSTALL_PLUGINS=ON -DQTK_INSTALL_GUI=OFF -DQTK_INSTALL_LIB=OFF +cmake --build /path/to/qtk/build cmake --install /path/to/qtk/build ``` @@ -95,6 +121,14 @@ xargs rm < build/install_manifest.txt ``` +#### Windows / MacOS + +If you are building on **Windows / Mac**, consider setting the `-DASSIMP_NEW_INTERFACE` build flag. +```bash +cmake -S qtk/ -B qtk/build/ -DASSIMP_NEW_INTERFACE=ON -DCMAKE_PREFIX_PATH=$HOME/Qt/6.5.0/gcc_64;/path/to/assimp/ +cmake --build qtk/build/ -j $(nproc --ignore=2) +``` + ### Controls You can fly around the scene if you hold the right mouse button and use WASD. @@ -148,7 +182,7 @@ If you're using CLion, the `.clang-format` configuration will be picked up by CL # Move to the root of the repo cd qtk # Build -cmake -B build && cmake --build build +cmake -B build && cmake --build build clang-tidy -p build/ --fix --config-file=.clang-tidy src/*.cpp src/*.h app/*.cpp app/*.h ``` @@ -198,12 +232,24 @@ Alternatively, we can use `cpack` directly - cd /path/to/qtk && cmake -B build # Generate all install packages cpack -C Release -# Generate a specific install package (ZIP) +# Generate a specific archive package (ZIP) cpack -C Release -G ZIP -# Generate a specific install package (DEB) +# Generate a specific archive package (TGZ) +cpack -C Release -G TGZ +# Generate debian package (DEB) cpack -C Release -G DEB +# Generate NSIS install package (NSIS) +cpack -C Release -G NSIS ``` +Any of the above options can be appended with `--trace-expand` to debug package generation issues. +The contents of all packages will depend on how the build was configured. + +If we are generating packages for *only* libqtk, we set `-DQTK_INSTALL_LIB=ON` during the cmake configuration step. +To generate packages for Qtk desktop application, we should set `-DQTK_INSTALL_GUI=ON`, and optionally `-DQTK_INSTALL_LIB=ON` if we would like to bundle libqtk with the desktop application. + +The NSIS installer will allow component-specific path modification for all of these installation components through a GUI install application. + ##### Resources Some useful links and resources that I have found while working on this project. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 42b03dc..de0bdb8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,8 +9,67 @@ add_subdirectory(qtk) # Qtk Application -if (QTK_BUILD_GUI) +if (QTK_INSTALL_GUI OR QTK_INSTALL_PLUGINS) add_subdirectory(app) + + # Install custom Qtk plugins for Qt Designer. + if(QTK_INSTALL_PLUGINS) + install( + TARGETS qtk_library qtk_plugin_library + COMPONENT qtk_collection + LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" + ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" + RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" + ) + install( + TARGETS qtk_collection + COMPONENT qtk_collection + LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" + ARCHIVE DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" + RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" + ) + endif() + + if(QTK_INSTALL_GUI) + install( + TARGETS qtk_main qtk_library + COMPONENT qtk + BUNDLE DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin + ) + + qt_generate_deploy_app_script( + TARGET qtk_main + OUTPUT_SCRIPT QTK_DEPLOY_SCRIPT + NO_UNSUPPORTED_PLATFORM_ERROR + ) + install(SCRIPT ${QTK_DEPLOY_SCRIPT} COMPONENT qtk) + + if(WIN32) + if(MSVC AND TARGET Qt6::qmake) + 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) + + set(VSUSER_FILE "${CMAKE_CURRENT_BINARY_DIR}/qtk_main.vcxproj.user") + file(WRITE ${VSUSER_FILE} "\n") + file(APPEND ${VSUSER_FILE} "\n") + file(APPEND ${VSUSER_FILE} " \n") + file(APPEND ${VSUSER_FILE} " Path=$(SolutionDir)\\lib\\$(Configuration);${QT6_INSTALL_PREFIX};$(Path)\n") + file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)\n") + file(APPEND ${VSUSER_FILE} " WindowsLocalDebugger\n") + file(APPEND ${VSUSER_FILE} " \n") + file(APPEND ${VSUSER_FILE} "\n") + endif() + endif() + endif() endif() write_basic_package_version_file( @@ -22,20 +81,35 @@ configure_package_config_file( "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" INSTALL_DESTINATION lib/cmake/${PROJECT_NAME} ) -install( - FILES + +if (QTK_INSTALL_LIB) + install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" - COMPONENT libqtk - DESTINATION lib/cmake/${PROJECT_NAME} -) -install( - EXPORT qtk_export + COMPONENT libqtk + DESTINATION lib/cmake/${PROJECT_NAME} + ) + install( + EXPORT qtk_export FILE ${PROJECT_NAME}Targets.cmake NAMESPACE ${PROJECT_NAME}:: - COMPONENT libqtk - DESTINATION lib/cmake/${PROJECT_NAME} -) + COMPONENT libqtk + DESTINATION lib/cmake/${PROJECT_NAME} + ) + # System install for qtk_library + install( + TARGETS qtk_library + # Associate qtk_library target with qtk-export + EXPORT qtk_export + COMPONENT libqtk + FILE_SET HEADERS DESTINATION include + INCLUDES DESTINATION include + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib/static + RUNTIME DESTINATION bin + ) +endif() set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") @@ -50,14 +124,41 @@ set(CPACK_PACKAGE_CONTACT "shaunreed.com") set(CPACK_THREADS 0) set(CPACK_PACKAGE_INSTALL_DIRECTORY "Qtk") +# Remove any assimp components if defined by submodule. +if (QTK_UPDATE_SUBMODULES) + get_cmake_property(CPACK_COMPONENTS_ALL COMPONENTS) + list(FILTER CPACK_COMPONENTS_ALL EXCLUDE REGEX .*assimp.*) + list(REMOVE_ITEM CPACK_COMPONENTS_ALL Unspecified) +endif() + +# Windows +set(CPACK_NSIS_MODIFY_PATH ON) +set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) +set( + CPACK_NSIS_CREATE_ICONS_EXTRA + "CreateShortCut '$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\Qtk.lnk' '$INSTDIR\\\\qtk_main.exe'" +) +set( + CPACK_NSIS_DELETE_ICONS_EXTRA + "Delete '$SMPROGRAMS\\\\$START_MENU\\\\Qtk.lnk'" +) +# TODO: Icons for NSIS installer. +#set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/resources/icon.png") +#set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/resources/icon.png") + # Debian +# TODO: Fix output sharedlib path. set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${CPACK_PACKAGE_HOMEPAGE_URL}) -set(CPACK_INSTALL_SCRIPTS ${QTK_DEPLOY_SCRIPT}) +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) +#set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local/) # OSX +# TODO: Fix OSX appbundle error. set(CPACK_BUNDLE_NAME ${PROJECT_NAME}) set(CPACK_BUNDLE_PLIST $/Info.plist) set(CPACK_BUNDLE_ICON ${QTK_OSX_ICONS}) + +# Platform defaults for source bundles. if(WIN32) set(CPACK_SOURCE_GENERATOR ZIP) else() diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index d6b768b..c2d52cb 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -23,7 +23,7 @@ set( toolbox.h treeview.h ) -qt_add_library(qtk_plugin_library STATIC) +qt_add_library(qtk_plugin_library STATIC EXCLUDE_FROM_ALL) target_sources( qtk_plugin_library PRIVATE "${QTK_PLUGIN_LIBRARY_SOURCES}" @@ -31,28 +31,11 @@ target_sources( ) target_link_libraries(qtk_plugin_library PUBLIC Qt6::UiPlugin qtk_library) -install( - TARGETS qtk_plugin_library - COMPONENT qtk_collection - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib/static - RUNTIME DESTINATION bin -) - -# Install plugin library to Qt Creator for Designer plugin integration. -#install( -# TARGETS qtk_plugin_library -# EXCLUDE_FROM_ALL -# LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -# ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -# RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -#) - ################################################################################ # Qtk Widget Collection Plugin ################################################################################ # Create a Qt Designer plugin for a collection of widgets from our library. -qt_add_plugin(qtk_collection STATIC) +qt_add_plugin(qtk_collection SHARED EXCLUDE_FROM_ALL) target_sources( qtk_collection PRIVATE widgetplugincollection.cpp widgetplugincollection.h @@ -60,22 +43,6 @@ target_sources( ) target_link_libraries(qtk_collection PUBLIC qtk_plugin_library) -install( - TARGETS qtk_collection - COMPONENT qtk_collection - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib/static - RUNTIME DESTINATION bin -) - -#install( -# TARGETS qtk_collection -# EXCLUDE_FROM_ALL -# LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" -# ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -# RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}" -#) - ################################################################################ # Final Qtk Application ################################################################################ @@ -109,34 +76,3 @@ set_target_properties( MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} ) - -install( - TARGETS qtk_main - COMPONENT qtk - BUNDLE DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib/static - RUNTIME DESTINATION bin -) - -qt_generate_deploy_app_script( - TARGET qtk_main - FILENAME_VARIABLE QTK_DEPLOY_SCRIPT - NO_UNSUPPORTED_PLATFORM_ERROR -) -install(SCRIPT ${QTK_DEPLOY_SCRIPT} COMPONENT qtk) - -if(WIN32) - 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} "\n") - file(APPEND ${VSUSER_FILE} "\n") - file(APPEND ${VSUSER_FILE} " \n") - file(APPEND ${VSUSER_FILE} " Path=$(SolutionDir)\\lib\\$(Configuration);${qt6_install_prefix};${assimp_bin};$(Path)\n") - file(APPEND ${VSUSER_FILE} "$(LocalDebuggerEnvironment)\n") - file(APPEND ${VSUSER_FILE} " WindowsLocalDebugger\n") - file(APPEND ${VSUSER_FILE} " \n") - file(APPEND ${VSUSER_FILE} "\n") - endif() -endif() diff --git a/src/qtk/CMakeLists.txt b/src/qtk/CMakeLists.txt index 2cc13fa..1ec166b 100644 --- a/src/qtk/CMakeLists.txt +++ b/src/qtk/CMakeLists.txt @@ -44,7 +44,7 @@ set( ) qt6_add_big_resources(QTK_LIBRARY_SOURCES "${QTK_RESOURCES}/resources.qrc") -qt_add_library(qtk_library STATIC) +qt_add_library(qtk_library STATIC EXCLUDE_FROM_ALL) target_sources(qtk_library PRIVATE ${QTK_LIBRARY_SOURCES}) target_sources( qtk_library PUBLIC @@ -78,24 +78,5 @@ if(WIN32) target_link_libraries(qtk_library PUBLIC OpenGL::GL) endif() -# System install for qtk_library -install( - TARGETS qtk_library - # Associate qtk_library target with qtk-export - EXPORT qtk_export - COMPONENT libqtk - FILE_SET HEADERS DESTINATION include - INCLUDES DESTINATION include - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib/static - RUNTIME DESTINATION bin -) - +#install(SCRIPT ${LIBQTK_DEPLOY_SCRIPT} COMPONENT libqtk) ## Install qtk_library to Qt Designer to support widget plugins. -#install( -# TARGETS qtk_library -# EXCLUDE_FROM_ALL -# LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -# ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -# RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}" -#)