| | |
| | | qm_import(Filesystem Preprocess) |
| | | qm_init_directories() |
| | | qm_import(Preprocess) |
| | | |
| | | set(QWINDOWKIT_PROJECT_DESCRIPTION "Cross-platform window customization framework") |
| | | set(QWINDOWKIT_PROJECT_COPYRIGHT "Copyright 2023 Stdware Collections") |
| | | set(QWINDOWKIT_GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/../include) |
| | | set(QWINDOWKIT_BUILD_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/../etc/include) |
| | | |
| | | set(QWINDOWKIT_ENABLED_TARGETS) |
| | | set(QWINDOWKIT_ENABLED_SUBDIRECTORIES) |
| | | |
| | | # ---------------------------------- |
| | | # Configurations |
| | |
| | | set(QMSETUP_DEFINITION_SCOPE DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) |
| | | set(QMSETUP_DEFINITION_NUMERICAL on) |
| | | |
| | | qm_add_definition(QWINDOWKIT_TEST_CONFIG true) |
| | | qm_add_definition(QWINDOWKIT_ENABLE_QT_WINDOW_CONTEXT |
| | | CONDITION QWINDOWKIT_ENABLE_QT_WINDOW_CONTEXT |
| | | ) |
| | | qm_add_definition(QWINDOWKIT_ENABLE_STYLE_AGENT |
| | | CONDITION QWINDOWKIT_ENABLE_STYLE_AGENT |
| | | ) |
| | | qm_add_definition(QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS |
| | | CONDITION QWINDOWKIT_ENABLE_WINDOWS_SYSTEM_BORDERS |
| | | ) |
| | | |
| | | qm_generate_config(${QWINDOWKIT_BUILD_INCLUDE_DIR}/QWKCore/qwkconfig.h) |
| | | |
| | |
| | | # ---------------------------------- |
| | | # CMake API |
| | | # ---------------------------------- |
| | | function(qwk_add_library _target) |
| | | macro(qwk_add_library _target) |
| | | set(options AUTOGEN NO_SYNC_INCLUDE NO_WIN_RC) |
| | | set(oneValueArgs SYNC_INCLUDE_PREFIX PREFIX) |
| | | set(multiValueArgs SYNC_INCLUDE_OPTIONS) |
| | |
| | | if(WIN32 AND NOT FUNC_NO_WIN_RC AND(${_type} STREQUAL "SHARED")) |
| | | qm_add_win_rc(${_target} |
| | | NAME ${QWINDOWKIT_INSTALL_NAME} |
| | | DESCRIPTION ${QWINDOWKIT_PROJECT_DESCRIPTION} |
| | | COPYRIGHT ${QWINDOWKIT_PROJECT_COPYRIGHT} |
| | | DESCRIPTION ${QWINDOWKIT_DESCRIPTION} |
| | | COPYRIGHT ${QACTIONKIT_COPYRIGHT} |
| | | ) |
| | | endif() |
| | | |
| | |
| | | |
| | | # Add include directories |
| | | target_include_directories(${_target} PRIVATE ${QWINDOWKIT_BUILD_INCLUDE_DIR}) |
| | | target_include_directories(${_target} PRIVATE .) |
| | | |
| | | # Library name |
| | | if(${_target} MATCHES "^QWK(.+)") |
| | |
| | | if(NOT FUNC_NO_SYNC_INCLUDE) |
| | | # Generate a standard include directory in build directory |
| | | qm_sync_include(. "${QWINDOWKIT_GENERATED_INCLUDE_DIR}/${_inc_name}" ${_install_options} |
| | | ${FUNC_SYNC_INCLUDE_OPTIONS} |
| | | ${FUNC_SYNC_INCLUDE_OPTIONS} FORCE |
| | | ) |
| | | target_include_directories(${_target} PUBLIC |
| | | "$<BUILD_INTERFACE:${QWINDOWKIT_GENERATED_INCLUDE_DIR}>" |
| | | ) |
| | | endif() |
| | | endfunction() |
| | | endmacro() |
| | | |
| | | # ---------------------------------- |
| | | # Main Project |
| | |
| | | set(_install_options INSTALL_DIR share/doc/${QWINDOWKIT_INSTALL_NAME}) |
| | | endif() |
| | | |
| | | set(_doc_targets) |
| | | qm_collect_targets(_doc_targets SHARED STATIC) |
| | | set(_doc_targets ${QWINDOWKIT_ENABLED_TARGETS}) |
| | | |
| | | set(QWINDOWKIT_DOXYGEN_TAGFILE |
| | | ${CMAKE_BUILD_SHARE_DIR}/doc/${QWINDOWKIT_INSTALL_NAME}/${QWINDOWKIT_INSTALL_NAME}_tagfile.xml |
| | | CACHE FILEPATH "QWINDOWKIT doxygen tag file path" FORCE |
| | | CACHE FILEPATH "QWindowKit doxygen tag file path" FORCE |
| | | ) |
| | | |
| | | qm_import(Doxygen) |
| | | qm_setup_doxygen(QWINDOWKIT_RunDoxygen |
| | | NAME "QWINDOWKIT" |
| | | DESCRIPTION "${QWINDOWKIT_PROJECT_DESCRIPTION}" |
| | | qm_setup_doxygen(QWindowKit_RunDoxygen |
| | | NAME "QWindowKit" |
| | | DESCRIPTION "${QWINDOWKIT_DESCRIPTION}" |
| | | MDFILE ../README.md |
| | | OUTPUT_DIR ${CMAKE_BUILD_SHARE_DIR}/doc/${QWINDOWKIT_INSTALL_NAME} |
| | | INPUT QWINDOWKIT |
| | | INPUT ${QWINDOWKIT_ENABLED_SUBDIRECTORIES} |
| | | TARGETS ${_doc_targets} |
| | | DEPENDS ${_doc_targets} |
| | | NO_EXPAND_MACROS Q_OBJECT Q_GADGET Q_DECLARE_TR_FUNCTIONS |
| | |
| | | # Install |
| | | # ---------------------------------- |
| | | if(QWINDOWKIT_INSTALL) |
| | | # Add install target |
| | | set(_install_dir ${CMAKE_INSTALL_LIBDIR}/cmake/${QWINDOWKIT_INSTALL_NAME}) |
| | | |
| | | # Add version file |
| | | write_basic_package_version_file( |
| | | "${CMAKE_CURRENT_BINARY_DIR}/${QWINDOWKIT_INSTALL_NAME}ConfigVersion.cmake" |
| | | VERSION ${PROJECT_VERSION} |
| | | COMPATIBILITY AnyNewerVersion |
| | | ) |
| | | |
| | | # Add configuration file |
| | | configure_package_config_file( |
| | | ${CMAKE_CURRENT_LIST_DIR}/${QWINDOWKIT_INSTALL_NAME}Config.cmake.in |
| | | "${CMAKE_CURRENT_BINARY_DIR}/${QWINDOWKIT_INSTALL_NAME}Config.cmake" |
| | | INSTALL_DESTINATION ${_install_dir} |
| | | NO_CHECK_REQUIRED_COMPONENTS_MACRO |
| | | ) |
| | | |
| | | # Install cmake files |
| | | install(FILES |
| | | "${CMAKE_CURRENT_BINARY_DIR}/${QWINDOWKIT_INSTALL_NAME}Config.cmake" |
| | | "${CMAKE_CURRENT_BINARY_DIR}/${QWINDOWKIT_INSTALL_NAME}ConfigVersion.cmake" |
| | | DESTINATION ${_install_dir} |
| | | ) |
| | | |
| | | # Install cmake targets files |
| | | install(EXPORT ${QWINDOWKIT_INSTALL_NAME}Targets |
| | | FILE "${QWINDOWKIT_INSTALL_NAME}Targets.cmake" |
| | | qm_basic_install( |
| | | NAME ${QWINDOWKIT_INSTALL_NAME} |
| | | VERSION ${QWINDOWKIT_VERSION} |
| | | INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${QWINDOWKIT_INSTALL_NAME} |
| | | CONFIG_TEMPLATE "${QWINDOWKIT_INSTALL_NAME}Config.cmake.in" |
| | | NAMESPACE ${QWINDOWKIT_INSTALL_NAME}:: |
| | | DESTINATION ${_install_dir} |
| | | EXPORT ${QWINDOWKIT_INSTALL_NAME}Targets |
| | | WRITE_CONFIG_OPTIONS NO_CHECK_REQUIRED_COMPONENTS_MACRO |
| | | ) |
| | | |
| | | # Install shared files |
| | | install(DIRECTORY ../share/ |
| | | DESTINATION share/${QWINDOWKIT_INSTALL_NAME} |
| | | ) |
| | | include("../share/install.cmake") |
| | | endif() |