qtutilities/cmake/modules/QtGuiConfig.cmake

87 lines
3.1 KiB
CMake

cmake_minimum_required(VERSION 3.3.0 FATAL_ERROR)
if (NOT BASIC_PROJECT_CONFIG_DONE)
message(FATAL_ERROR "Before including the QtGuiConfig module, the BasicConfig module must be included.")
endif ()
if (QT_CONFIGURED)
message(FATAL_ERROR "The QtGuiConfig module can not be included when Qt usage has already been configured.")
endif ()
if (TARGET_CONFIG_DONE)
message(FATAL_ERROR "Can not include QtGuiConfig module when targets are already configured.")
endif ()
if (NOT WIDGETS_GUI AND NOT QUICK_GUI)
message(STATUS "GUI is completely disabled.")
return()
endif ()
list(APPEND ADDITIONAL_QT_MODULES Gui)
# enable Qt Widgets GUI
if (WIDGETS_GUI)
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS GUI_QTWIDGETS)
list(APPEND META_PUBLIC_COMPILE_DEFINITIONS ${META_PROJECT_VARNAME_UPPER}_GUI_QTWIDGETS)
list(APPEND WIDGETS_FILES ${WIDGETS_HEADER_FILES} ${WIDGETS_SRC_FILES} ${WIDGETS_RES_FILES} ${WIDGETS_UI_FILES})
list(APPEND ADDITIONAL_HEADER_FILES ${WIDGETS_HEADER_FILES})
if (WIDGETS_FILES)
list(APPEND ADDITIONAL_QT_MODULES Widgets)
message(STATUS "Building with Qt Widgets GUI.")
else ()
message(STATUS "Qt Widgets GUI is not available.")
endif ()
else ()
message(STATUS "Building WITHOUT Qt Widgets GUI.")
endif ()
# enable Qt Quick GUI
if (QUICK_GUI)
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS GUI_QTQUICK)
list(APPEND META_PUBLIC_COMPILE_DEFINITIONS ${META_PROJECT_VARNAME_UPPER}_GUI_QTQUICK)
list(APPEND QML_FILES ${QML_HEADER_FILES} ${QML_SRC_FILES} ${QML_RES_FILES})
list(APPEND ADDITIONAL_HEADER_FILES ${QML_HEADER_FILES})
if (QML_FILES)
list(APPEND ADDITIONAL_QT_MODULES Qml Quick)
list(APPEND ADDITIONAL_QT_REPOS "declarative")
message(STATUS "Building with Qt Quick GUI.")
# enable QML debugging
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS QT_QML_DEBUG)
endif ()
# enable Qt Quick Controls 2
if (META_USE_QQC2)
list(APPEND ADDITIONAL_QT_MODULES QuickControls2)
endif ()
else ()
message(STATUS "Qt Quick GUI is not available.")
endif ()
else ()
message(STATUS "Building WITHOUT Qt Quick GUI.")
endif ()
# set platform-specific GUI-type
if (WIN32)
# set "GUI-type" to WIN32 to hide console under Windows
set(GUI_TYPE WIN32)
elseif (APPLE)
# make the GUI application a "bundle" under MacOSX
set(GUI_TYPE MACOSX_BUNDLE)
endif ()
# add source files required by both GUI variants
list(APPEND SRC_FILES ${GUI_SRC_FILES})
list(APPEND ADDITIONAL_HEADER_FILES ${GUI_HEADER_FILES})
# add option for enabling/disabling static Qt plugins
option(SVG_SUPPORT "whether to link against the SVG image format plugin (only relevant when using static Qt)" ON)
option(SVG_ICON_SUPPORT "whether to link against the SVG icon engine (only relevant when using static Qt)" ON)
set(IMAGE_FORMAT_SUPPORT
"Gif;ICO;Jpeg"
CACHE STRING "specifies the image format plugins to link against (only relevant when using static Qt)")
# always enable the Svg module under Android
if (ANDROID)
list(APPEND ADDITIONAL_QT_MODULES Svg)
endif ()