2022-12-18 09:19:04 -05:00
|
|
|
################################################################################
|
|
|
|
## Project for working with OpenGL and Qt6 widgets ##
|
2023-01-01 22:26:58 -05:00
|
|
|
## ##
|
|
|
|
## Author: Shaun Reed | Contact: shaunrd0@gmail.com | URL: www.shaunreed.com ##
|
|
|
|
## All Content (c) 2023 Shaun Reed, all rights reserved ##
|
2022-12-18 09:19:04 -05:00
|
|
|
################################################################################
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Qtk Widget Library
|
|
|
|
################################################################################
|
|
|
|
# Create a library of widgets used to build Qtk GUI
|
2023-01-02 22:18:53 -05:00
|
|
|
set(
|
|
|
|
QTK_PLUGIN_LIBRARY_SOURCES
|
2023-01-14 19:01:34 -05:00
|
|
|
qtkwidget.cpp
|
2022-12-18 09:19:04 -05:00
|
|
|
debugconsole.cpp debugconsole.ui
|
|
|
|
toolbox.cpp toolbox.ui
|
|
|
|
treeview.cpp treeview.ui
|
|
|
|
)
|
2023-01-02 22:18:53 -05:00
|
|
|
set(
|
|
|
|
QTK_PLUGIN_LIBRARY_HEADERS
|
2023-01-14 19:01:34 -05:00
|
|
|
qtkwidget.h
|
2022-12-18 09:19:04 -05:00
|
|
|
debugconsole.h
|
|
|
|
toolbox.h
|
|
|
|
treeview.h
|
|
|
|
)
|
2023-01-15 16:23:26 -05:00
|
|
|
qt_add_library(qtk_plugin_library STATIC)
|
2023-01-02 22:18:53 -05:00
|
|
|
target_sources(
|
2023-01-15 16:23:26 -05:00
|
|
|
qtk_plugin_library PRIVATE
|
2023-01-02 22:18:53 -05:00
|
|
|
"${QTK_PLUGIN_LIBRARY_SOURCES}"
|
|
|
|
"${QTK_PLUGIN_LIBRARY_HEADERS}"
|
2022-12-18 09:19:04 -05:00
|
|
|
)
|
2023-01-15 16:23:26 -05:00
|
|
|
target_link_libraries(qtk_plugin_library PUBLIC Qt6::UiPlugin qtk_library)
|
2022-12-18 09:19:04 -05:00
|
|
|
|
2023-01-02 22:18:53 -05:00
|
|
|
install(
|
2023-01-15 16:23:26 -05:00
|
|
|
TARGETS qtk_plugin_library
|
2023-01-02 22:18:53 -05:00
|
|
|
BUNDLE DESTINATION lib
|
|
|
|
LIBRARY DESTINATION lib
|
|
|
|
ARCHIVE DESTINATION lib/static
|
|
|
|
RUNTIME DESTINATION bin
|
2022-12-18 09:19:04 -05:00
|
|
|
)
|
|
|
|
|
2023-01-02 22:18:53 -05:00
|
|
|
install(
|
2023-01-15 16:23:26 -05:00
|
|
|
TARGETS qtk_plugin_library
|
2023-01-02 22:18:53 -05:00
|
|
|
BUNDLE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
|
|
|
|
LIBRARY DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
|
|
|
|
RUNTIME DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
|
|
|
|
ARCHIVE DESTINATION "${QTK_PLUGIN_LIBRARY_DIR}"
|
2022-12-18 09:19:04 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Qtk Widget Collection Plugin
|
|
|
|
################################################################################
|
|
|
|
# Create a Qt Designer plugin for a collection of widgets from our library.
|
2023-01-15 16:04:48 -05:00
|
|
|
qt_add_plugin(qtk_collection STATIC)
|
2023-01-02 22:18:53 -05:00
|
|
|
target_sources(
|
2023-01-15 16:04:48 -05:00
|
|
|
qtk_collection PRIVATE
|
2022-12-18 09:19:04 -05:00
|
|
|
widgetplugincollection.cpp widgetplugincollection.h
|
|
|
|
widgetplugin.cpp widgetplugin.h
|
|
|
|
)
|
2023-01-15 16:23:26 -05:00
|
|
|
target_link_libraries(qtk_collection PUBLIC qtk_plugin_library)
|
2022-12-18 09:19:04 -05:00
|
|
|
|
2023-01-02 22:18:53 -05:00
|
|
|
install(
|
2023-01-15 16:04:48 -05:00
|
|
|
TARGETS qtk_collection
|
2023-01-02 22:18:53 -05:00
|
|
|
RUNTIME DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
|
|
|
|
BUNDLE DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
|
|
|
|
LIBRARY DESTINATION "${QTK_PLUGIN_INSTALL_DIR}"
|
2022-12-18 09:19:04 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
# Final Qtk Application
|
|
|
|
################################################################################
|
|
|
|
|
2023-01-02 22:18:53 -05:00
|
|
|
set(
|
|
|
|
QTK_APP_SOURCES
|
2022-12-18 09:19:04 -05:00
|
|
|
examplescene.cpp examplescene.h
|
2023-01-15 16:04:48 -05:00
|
|
|
qtkmainwindow.cpp qtkmainwindow.h qtkmainwindow.ui
|
2022-12-18 09:19:04 -05:00
|
|
|
main.cpp
|
|
|
|
)
|
2023-01-14 19:01:34 -05:00
|
|
|
|
2023-01-15 16:04:48 -05:00
|
|
|
qt6_add_big_resources(QTK_APP_SOURCES "${QTK_RESOURCES}/resources.qrc")
|
2022-12-18 09:19:04 -05:00
|
|
|
configure_file(
|
2023-01-02 22:18:53 -05:00
|
|
|
resources.h.in
|
2022-12-18 09:19:04 -05:00
|
|
|
"${CMAKE_CURRENT_BINARY_DIR}/resources.h"
|
|
|
|
@ONLY
|
|
|
|
)
|
|
|
|
|
2023-01-15 16:23:26 -05:00
|
|
|
qt_add_executable(qtk_main ${QTK_APP_SOURCES})
|
|
|
|
target_link_libraries(qtk_main PRIVATE qtk_plugin_library)
|
2022-12-18 09:19:04 -05:00
|
|
|
|
2023-01-02 22:18:53 -05:00
|
|
|
set_target_properties(
|
2023-01-15 16:23:26 -05:00
|
|
|
qtk_main PROPERTIES
|
2023-01-14 16:33:06 -05:00
|
|
|
WIN32_EXECUTABLE TRUE
|
|
|
|
MACOSX_BUNDLE TRUE
|
|
|
|
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
|
|
|
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
2022-12-18 09:19:04 -05:00
|
|
|
)
|
|
|
|
|
2023-01-02 22:18:53 -05:00
|
|
|
install(
|
2023-01-15 16:23:26 -05:00
|
|
|
TARGETS qtk_main
|
2023-01-02 22:18:53 -05:00
|
|
|
BUNDLE DESTINATION bin
|
|
|
|
RUNTIME DESTINATION bin
|
|
|
|
LIBRARY DESTINATION bin/lib
|
2022-12-18 09:19:04 -05:00
|
|
|
)
|
2023-01-14 19:01:34 -05:00
|
|
|
|
|
|
|
qt_generate_deploy_app_script(
|
2023-01-15 16:23:26 -05:00
|
|
|
TARGET qtk_main
|
2023-01-15 16:04:48 -05:00
|
|
|
FILENAME_VARIABLE QTK_DEPLOY_SCRIPT
|
2023-01-14 19:01:34 -05:00
|
|
|
NO_UNSUPPORTED_PLATFORM_ERROR
|
|
|
|
)
|
2023-01-15 16:04:48 -05:00
|
|
|
install(SCRIPT ${QTK_DEPLOY_SCRIPT})
|
2023-01-14 19:01:34 -05:00
|
|
|
|
|
|
|
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(
|
2023-01-15 16:23:26 -05:00
|
|
|
TARGET qtk_main
|
2023-01-14 19:01:34 -05:00
|
|
|
POST_BUILD
|
|
|
|
COMMAND set PATH=%PATH%$<SEMICOLON>${qt6_install_prefix}
|
2023-01-15 16:23:26 -05:00
|
|
|
COMMAND Qt6::windeployqt --dir "${CMAKE_BINARY_DIR}/windeployqt" "$<TARGET_FILE_DIR:qtk_main>/$<TARGET_FILE_NAME:qtk_main>"
|
2023-01-14 19:01:34 -05:00
|
|
|
)
|
|
|
|
install(DIRECTORY "${CMAKE_BINARY_DIR}/windeployqt/" DESTINATION bin)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(MSVC AND TARGET Qt6::qmake)
|
2023-01-15 16:23:26 -05:00
|
|
|
set(VSUSER_FILE "${CMAKE_CURRENT_BINARY_DIR}/qtk_main.vcxproj.user")
|
2023-01-14 19:01:34 -05:00
|
|
|
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()
|