cmake_minimum_required(VERSION 3.20) project(FramelessHelper VERSION 2.0.0.0 DESCRIPTION "Window customization framework for Qt Widgets and Qt Quick." HOMEPAGE_URL "https://github.com/wangwenx190/framelesshelper" LANGUAGES CXX ) option(FRAMELESSHELPER_BUILD_STATIC "Build FramelessHelper as a static library." OFF) option(FRAMELESSHELPER_BUILD_EXAMPLES "Build FramelessHelper demo applications." ON) if(NOT DEFINED CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug")) if(NOT DEFINED CMAKE_INTERPROCEDURAL_OPTIMIZATION) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) endif() endif() if(NOT DEFINED CMAKE_DEBUG_POSTFIX) if(WIN32) set(CMAKE_DEBUG_POSTFIX d) else() set(CMAKE_DEBUG_POSTFIX _debug) endif() endif() if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) endif() if(NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) endif() if(NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) endif() set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_VISIBILITY_PRESET hidden) set(CMAKE_VISIBILITY_INLINES_HIDDEN ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Gui) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui) find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets) find_package(QT NAMES Qt6 Qt5 COMPONENTS Quick) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Quick) add_subdirectory(src) if(FRAMELESSHELPER_BUILD_EXAMPLES) add_subdirectory(examples) endif()