| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- qm_import(Preprocess)
- 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_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)
- if(QWINDOWKIT_INSTALL)
- install(FILES ${QWINDOWKIT_BUILD_INCLUDE_DIR}/QWKCore/qwkconfig.h
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${QWINDOWKIT_INSTALL_NAME}/QWKCore
- )
- endif()
- # ----------------------------------
- # CMake API
- # ----------------------------------
- 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)
- cmake_parse_arguments(FUNC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
- if(FUNC_AUTOGEN)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_AUTORCC ON)
- endif()
- if(QWINDOWKIT_BUILD_STATIC)
- set(_type STATIC)
- else()
- set(_type SHARED)
- endif()
- add_library(${_target} ${_type})
- if(WIN32 AND NOT FUNC_NO_WIN_RC AND(${_type} STREQUAL "SHARED"))
- qm_add_win_rc(${_target}
- NAME ${QWINDOWKIT_INSTALL_NAME}
- DESCRIPTION ${QWINDOWKIT_DESCRIPTION}
- COPYRIGHT ${QACTIONKIT_COPYRIGHT}
- )
- endif()
- if(FUNC_PREFIX)
- set(_prefix_option PREFIX ${FUNC_PREFIX})
- else()
- set(_prefix_option)
- endif()
- # Set global definitions
- qm_export_defines(${_target} ${_prefix_option})
- # Configure target
- qm_configure_target(${_target} ${FUNC_UNPARSED_ARGUMENTS})
- # Add include directories
- target_include_directories(${_target} PRIVATE ${QWINDOWKIT_BUILD_INCLUDE_DIR})
- target_include_directories(${_target} PRIVATE .)
- # Library name
- if(${_target} MATCHES "^QWK(.+)")
- set(_name ${CMAKE_MATCH_1})
- set_target_properties(${_target} PROPERTIES EXPORT_NAME ${_name})
- else()
- set(_name ${_target})
- endif()
- add_library(${QWINDOWKIT_INSTALL_NAME}::${_name} ALIAS ${_target})
- if(FUNC_SYNC_INCLUDE_PREFIX)
- set(_inc_name ${FUNC_SYNC_INCLUDE_PREFIX})
- else()
- set(_inc_name ${_target})
- endif()
- set(_install_options)
- if(QWINDOWKIT_INSTALL)
- install(TARGETS ${_target}
- EXPORT ${QWINDOWKIT_INSTALL_NAME}Targets
- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" OPTIONAL
- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" OPTIONAL
- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" OPTIONAL
- )
- target_include_directories(${_target} PUBLIC
- "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/${QWINDOWKIT_INSTALL_NAME}>"
- )
- set(_install_options
- INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${QWINDOWKIT_INSTALL_NAME}/${_inc_name}"
- )
- endif()
- 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} FORCE
- )
- target_include_directories(${_target} PUBLIC
- "$<BUILD_INTERFACE:${QWINDOWKIT_GENERATED_INCLUDE_DIR}>"
- )
- endif()
- endmacro()
- # ----------------------------------
- # Main Project
- # ----------------------------------
- add_subdirectory(core)
- if(QWINDOWKIT_BUILD_WIDGETS)
- add_subdirectory(widgets)
- endif()
- if(QWINDOWKIT_BUILD_QUICK)
- add_subdirectory(quick)
- endif()
- # ----------------------------------
- # Documentation
- # ----------------------------------
- if(QWINDOWKIT_BUILD_DOCUMENTATIONS)
- if(NOT DOXYGEN_EXECUTABLE)
- find_package(Doxygen REQUIRED)
- endif()
- set(_install_options)
- if(QWINDOWKIT_INSTALL)
- set(_install_options INSTALL_DIR share/doc/${QWINDOWKIT_INSTALL_NAME})
- endif()
- 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
- )
- qm_import(Doxygen)
- 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_ENABLED_SUBDIRECTORIES}
- TARGETS ${_doc_targets}
- DEPENDS ${_doc_targets}
- NO_EXPAND_MACROS Q_OBJECT Q_GADGET Q_DECLARE_TR_FUNCTIONS
- COMPILE_DEFINITIONS Q_SIGNALS=Q_SIGNALS Q_SLOTS=Q_SLOTS
- GENERATE_TAGFILE "${QWINDOWKIT_DOXYGEN_TAGFILE}"
- ${_install_options}
- )
- endif()
- # ----------------------------------
- # Install
- # ----------------------------------
- if(QWINDOWKIT_INSTALL)
- 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}::
- EXPORT ${QWINDOWKIT_INSTALL_NAME}Targets
- WRITE_CONFIG_OPTIONS NO_CHECK_REQUIRED_COMPONENTS_MACRO
- )
- # Install shared files
- include("../share/install.cmake")
- endif()
|