97 lines
3.2 KiB
CMake
97 lines
3.2 KiB
CMake
################################################################################
|
|
## Example client project using qtk ##
|
|
## ##
|
|
## Author: Shaun Reed | Contact: shaunrd0@gmail.com | URL: www.shaunreed.com ##
|
|
## All Content (c) 2023 Shaun Reed, all rights reserved ##
|
|
################################################################################
|
|
cmake_minimum_required(VERSION 3.23)
|
|
|
|
################################################################################
|
|
# Constants
|
|
################################################################################
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
set(CMAKE_AUTORCC ON)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
|
add_compile_options(/wd4131 /wd4127)
|
|
endif()
|
|
|
|
# If you did not install Qtk on a system path, point cmake to installation.
|
|
set(
|
|
QTK_PATH ../build/install/lib/cmake/Qtk
|
|
CACHE PATH "Path to installation of Qtk"
|
|
FORCE
|
|
)
|
|
|
|
# If you did not install Qt6 on a system path, point cmake to installation.
|
|
set(QT_INSTALL_DIR "$ENV{HOME}/Qt/6.5.0/gcc_64/" CACHE PATH "Path to Qt6")
|
|
|
|
################################################################################
|
|
# Project
|
|
################################################################################
|
|
project(
|
|
#[[NAME]] QtkClient
|
|
VERSION 0.1
|
|
DESCRIPTION "An example project using Qtk"
|
|
LANGUAGES CXX C
|
|
)
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH "${QTK_PATH}")
|
|
list(APPEND CMAKE_PREFIX_PATH "${QT_INSTALL_DIR}")
|
|
|
|
# Print all QTK variables
|
|
if (NOT Qtk_IS_TOP_LEVEL)
|
|
get_cmake_property(VAR_NAMES VARIABLES)
|
|
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}}")
|
|
endforeach()
|
|
endif()
|
|
|
|
# Allow add_subdirectory on this project to use target ALIAS if available.
|
|
# If this example project is opened standalone we will use find_package.
|
|
if(NOT TARGET Qtk::qtk_library)
|
|
find_package(Qtk 0.2 REQUIRED)
|
|
endif()
|
|
|
|
find_package(Qt6 COMPONENTS Core Widgets OpenGLWidgets REQUIRED)
|
|
|
|
set(
|
|
EXAMPLE_SOURCES
|
|
main.cpp
|
|
examplescene.cpp examplescene.h
|
|
examplewidget.cpp examplewidget.h
|
|
)
|
|
|
|
configure_file(
|
|
#[[INPUT]] "${CMAKE_CURRENT_SOURCE_DIR}/resources.h.in"
|
|
#[[OUTPUT]] "${CMAKE_CURRENT_BINARY_DIR}/resources.h"
|
|
@ONLY
|
|
)
|
|
|
|
qt_add_executable(qtk_example ${EXAMPLE_SOURCES})
|
|
target_link_libraries(qtk_example PUBLIC Qt6::Widgets Qt6::OpenGLWidgets Qt6::Core)
|
|
target_link_libraries(qtk_example PUBLIC Qtk::qtk_library)
|
|
target_include_directories(qtk_example PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
|
|
|
|
install(
|
|
TARGETS qtk_example
|
|
COMPONENT qtk_example
|
|
BUNDLE DESTINATION .
|
|
LIBRARY DESTINATION lib
|
|
ARCHIVE DESTINATION lib/static
|
|
RUNTIME DESTINATION bin
|
|
)
|
|
qt_generate_deploy_app_script(
|
|
TARGET qtk_example
|
|
OUTPUT_SCRIPT QTK_EXAMPLE_DEPLOY_SCRIPT
|
|
NO_UNSUPPORTED_PLATFORM_ERROR
|
|
)
|
|
install(SCRIPT ${QTK_EXAMPLE_DEPLOY_SCRIPT} COMPONENT qtk_example)
|