# This is a build file for Huggle (used with cmake) cmake_minimum_required (VERSION 3.5) if (NOT HUGGLE_CMAKE) message(FATAL_ERROR "This cmake file can't be used on its own, it must be included from parent folder") endif() project(huggle_ui) include(GNUInstallDirs) set(CMAKE_include_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) if (QT6_BUILD) find_package(Qt6Core REQUIRED) find_package(Qt6Gui REQUIRED) find_package(Qt6Xml REQUIRED) find_package(Qt6Qml REQUIRED) find_package(Qt6Widgets REQUIRED) find_package(Qt6Network REQUIRED) set(QT_INCLUDES ${Qt6Gui_INCLUDE_DIRS} ${Qt6Qml_INCLUDE_DIRS} ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Svg_INCLUDE_DIRS}) find_package(Qt6WebEngineCore REQUIRED) find_package(Qt6WebEngineWidgets REQUIRED) set(QT_INCLUDES ${QT_INCLUDES} ${Qt6WebEngineCore_INCLUDE_DIRS}) if (AUDIO) find_package(Qt6Multimedia REQUIRED) set(QT_INCLUDES ${QT_INCLUDES} ${Qt6Multimedia_INCLUDE_DIRS}) endif() elseif(QT5_BUILD) find_package(Qt5Core REQUIRED) find_package(Qt5Gui REQUIRED) find_package(Qt5Xml REQUIRED) find_package(Qt5Qml REQUIRED) find_package(Qt5Widgets REQUIRED) find_package(Qt5Network REQUIRED) set(QT_INCLUDES ${Qt5Gui_INCLUDE_DIRS} ${Qt5Qml_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Svg_INCLUDE_DIRS}) if (NOT WEB_ENGINE) find_package(Qt5WebKit REQUIRED) find_package(Qt5WebKitWidgets REQUIRED) set(QT_INCLUDES ${QT_INCLUDES} ${Qt5WebKit_INCLUDE_DIRS} ${Qt5WebKitWidgets_INCLUDE_DIRS}) else() find_package(Qt5WebEngine REQUIRED) find_package(Qt5WebEngineWidgets REQUIRED) set(QT_INCLUDES ${QT_INCLUDES} ${Qt5WebEngine_INCLUDE_DIRS}) endif() if (AUDIO) find_package(Qt5Multimedia REQUIRED) set(QT_INCLUDES ${QT_INCLUDES} ${Qt5Multimedia_INCLUDE_DIRS}) endif() endif() include_directories(${QT_INCLUDES}) file(GLOB srcx "*.cpp" "scripting/*.cpp") file(GLOB resx "*.qrc") file(GLOB uixx "*.ui" "scripting/*.ui") file(GLOB headers "*.hpp" "scripting/*.hpp") if (NOT WEB_ENGINE) file(GLOB srcx_web "webkit/*.cpp") file(GLOB resx_web "webkit/*.qrc") file(GLOB uixx_web "webkit/*.ui") file(GLOB headers_web "webkit*.hpp") else() file(GLOB srcx_web "web_engine/*.cpp") file(GLOB resx_web "web_engine/*.qrc") file(GLOB uixx_web "web_engine/*.ui") file(GLOB headers_web "web_engine*.hpp") endif() set(huggle_ui_SOURCES ${srcx} ${srcx_web}) set(huggle_ui_FORMS ${uixx} ${uixx_web}) set(huggle_ui_RESOURCES ${resx} ${resx_web}) if (QT6_BUILD) QT6_WRAP_CPP(huggle_ui_HEADERS_MOC ${huggle_ui_HEADERS}) QT6_WRAP_UI(huggle_ui_FORMS_HEADERS ${huggle_ui_FORMS}) QT6_ADD_RESOURCES(huggle_ui_RESOURCES_RCC ${huggle_ui_RESOURCES}) elseif(QT5_BUILD) QT5_WRAP_CPP(huggle_ui_HEADERS_MOC ${huggle_ui_HEADERS}) QT5_WRAP_UI(huggle_ui_FORMS_HEADERS ${huggle_ui_FORMS}) QT5_ADD_RESOURCES(huggle_ui_RESOURCES_RCC ${huggle_ui_RESOURCES}) endif() add_definitions(${QT_DEFINITIONS}) add_definitions( -DQT_USE_QSTRINGBUILDER ) add_library(huggle_ui SHARED ${huggle_ui_SOURCES} ${headers} ${headers_web} ${huggle_ui_HEADERS_MOC} ${huggle_ui_FORMS_HEADERS} ${huggle_ui_RESOURCES_RCC}) target_link_libraries(huggle_ui ${QT_LIBRARIES}) set_target_properties(huggle_ui PROPERTIES COMPILE_FLAGS -DHUGGLE_LIBRARY_UI) if (WIN32) target_link_libraries(huggle_ui dbghelp) endif() target_link_libraries(huggle_ui huggle_core huggle_res irc ircclient yaml-cpp) if (QT6_BUILD) target_link_libraries(huggle_ui Qt6::Core Qt6::Gui Qt6::Widgets Qt6::WebEngineWidgets Qt6::WebEngineCore Qt6::Network Qt6::Xml) if (AUDIO) target_link_libraries(huggle_ui Qt6::Multimedia) endif() elseif(QT5_BUILD) if (NOT WEB_ENGINE) target_link_libraries(huggle_ui Qt5::Core Qt5::Gui Qt5::Qml Qt5::Widgets Qt5::WebKitWidgets Qt5::WebKit Qt5::Network Qt5::Xml) else() target_link_libraries(huggle_ui Qt5::Core Qt5::Gui Qt5::Widgets Qt5::WebEngineWidgets Qt5::WebEngine Qt5::Network Qt5::Xml) endif() if (AUDIO) target_link_libraries(huggle_ui Qt5::Multimedia) endif() endif() include_directories(${CMAKE_CURRENT_BINARY_DIR}) INSTALL(TARGETS huggle_ui DESTINATION ${CMAKE_INSTALL_LIBDIR})