Browse Source

CMake: Allow to build with Qt6

adaptive-webui-19844
Vladimir Golovnev (Glassez) 4 years ago
parent
commit
86b1ac5d7c
No known key found for this signature in database
GPG Key ID: 52A2C7DEE2DFA6F7
  1. 4
      CMakeLists.txt
  2. 36
      src/CMakeLists.txt
  3. 6
      src/app/CMakeLists.txt
  4. 4
      src/base/CMakeLists.txt
  5. 14
      src/gui/CMakeLists.txt

4
CMakeLists.txt

@ -12,7 +12,8 @@ project(qBittorrent @@ -12,7 +12,8 @@ project(qBittorrent
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
# version requirements - older versions may work, but you are on your own
set(minBoostVersion 1.65)
set(minQtVersion 5.15.2)
set(minQt5Version 5.15.2)
set(minQt6Version 6.2)
set(minOpenSSLVersion 1.1.1)
set(minLibtorrent1Version 1.2.14)
set(minLibtorrentVersion 2.0.4)
@ -22,6 +23,7 @@ set(minZlibVersion 1.2.11) @@ -22,6 +23,7 @@ set(minZlibVersion 1.2.11)
include(CheckCXXSourceCompiles) # TODO: migrate to CheckSourceCompiles in CMake >= 3.19
include(FeatureSummary)
include(FeatureOptionsSetup)
feature_option(QT6 "Use Qt6" OFF)
feature_option(STACKTRACE "Enable stacktraces" ON)
feature_option(GUI "Build GUI application" ON)
feature_option(WEBUI "Enables built-in HTTP server for headless use" ON)

36
src/CMakeLists.txt

@ -43,13 +43,24 @@ set_property(CACHE LibtorrentRasterbar_DIR PROPERTY TYPE PATH) @@ -43,13 +43,24 @@ set_property(CACHE LibtorrentRasterbar_DIR PROPERTY TYPE PATH)
find_package(Boost ${minBoostVersion} REQUIRED)
find_package(OpenSSL ${minOpenSSLVersion} REQUIRED)
find_package(ZLIB ${minZlibVersion} REQUIRED)
find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
if (DBUS)
find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS DBus)
set_package_properties(Qt5DBus PROPERTIES
DESCRIPTION "Qt5 module for inter-process communication over the D-Bus protocol"
PURPOSE "Required by the DBUS feature"
)
if (QT6)
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
if (DBUS)
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS DBus)
set_package_properties(Qt6DBus PROPERTIES
DESCRIPTION "Qt6 module for inter-process communication over the D-Bus protocol"
PURPOSE "Required by the DBUS feature"
)
endif()
else()
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
if (DBUS)
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS DBus)
set_package_properties(Qt5DBus PROPERTIES
DESCRIPTION "Qt5 module for inter-process communication over the D-Bus protocol"
PURPOSE "Required by the DBUS feature"
)
endif()
endif()
# automatically call Qt moc, rcc and uic as needed for all targets by default
@ -68,10 +79,15 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) @@ -68,10 +79,15 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(base)
if (GUI)
find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS Widgets Svg)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS WinExtras)
if (QT6)
find_package(Qt6 ${minQt6Version} REQUIRED COMPONENTS Widgets Svg)
else()
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS Widgets Svg)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
find_package(Qt5 ${minQt5Version} REQUIRED COMPONENTS WinExtras)
endif()
endif()
add_subdirectory(gui)
endif()

6
src/app/CMakeLists.txt

@ -4,14 +4,14 @@ @@ -4,14 +4,14 @@
# Based on https://gist.github.com/giraldeau/546ba5512a74dfe9d8ea0862d66db412
file(GLOB QBT_TS_FILES "${qBittorrent_SOURCE_DIR}/src/lang/*.ts")
set_source_files_properties(${QBT_TS_FILES} PROPERTIES OUTPUT_LOCATION "${qBittorrent_BINARY_DIR}/src/lang")
qt5_add_translation(QBT_QM_FILES ${QBT_TS_FILES} OPTIONS -silent)
qt_add_translation(QBT_QM_FILES ${QBT_TS_FILES} OPTIONS -silent)
configure_file("${qBittorrent_SOURCE_DIR}/src/lang/lang.qrc" "${qBittorrent_BINARY_DIR}/src/lang/lang.qrc" COPYONLY)
if (WEBUI)
file(GLOB QBT_WEBUI_TS_FILES "${qBittorrent_SOURCE_DIR}/src/webui/www/translations/*.ts")
set_source_files_properties(${QBT_WEBUI_TS_FILES}
PROPERTIES OUTPUT_LOCATION "${qBittorrent_BINARY_DIR}/src/webui/www/translations")
qt5_add_translation(QBT_WEBUI_QM_FILES ${QBT_WEBUI_TS_FILES} OPTIONS -silent)
qt_add_translation(QBT_WEBUI_QM_FILES ${QBT_WEBUI_TS_FILES} OPTIONS -silent)
configure_file("${qBittorrent_SOURCE_DIR}/src/webui/www/translations/webui_translations.qrc"
"${qBittorrent_BINARY_DIR}/src/webui/www/translations/webui_translations.qrc" COPYONLY)
endif()
@ -139,7 +139,7 @@ endif() @@ -139,7 +139,7 @@ endif()
if (GUI)
target_link_libraries(qbt_app PRIVATE qbt_gui)
if ((CMAKE_SYSTEM_NAME STREQUAL "Windows") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin"))
qt_import_plugins(qbt_app INCLUDE Qt5::QSvgIconPlugin Qt5::QSvgPlugin)
qt_import_plugins(qbt_app INCLUDE Qt::QSvgIconPlugin Qt::QSvgPlugin)
endif()
endif()

4
src/base/CMakeLists.txt

@ -177,7 +177,7 @@ target_link_libraries(qbt_base @@ -177,7 +177,7 @@ target_link_libraries(qbt_base
ZLIB::ZLIB
PUBLIC
LibtorrentRasterbar::torrent-rasterbar
Qt5::Core Qt5::Network Qt5::Sql Qt5::Xml
Qt::Core Qt::Network Qt::Sql Qt::Xml
qbt_common_cfg
)
@ -204,5 +204,5 @@ if (NOT WEBUI) @@ -204,5 +204,5 @@ if (NOT WEBUI)
endif()
if (DBUS)
target_link_libraries(qbt_base PUBLIC Qt5::DBus)
target_link_libraries(qbt_base PUBLIC Qt::DBus)
endif()

14
src/gui/CMakeLists.txt

@ -199,7 +199,7 @@ target_link_libraries(qbt_gui @@ -199,7 +199,7 @@ target_link_libraries(qbt_gui
PRIVATE
qbt_base
PUBLIC
Qt5::Gui Qt5::Widgets
Qt::Gui Qt::Widgets
)
if (DBUS)
@ -219,10 +219,10 @@ if ((CMAKE_SYSTEM_NAME STREQUAL "Windows") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwi @@ -219,10 +219,10 @@ if ((CMAKE_SYSTEM_NAME STREQUAL "Windows") OR (CMAKE_SYSTEM_NAME STREQUAL "Darwi
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
target_link_libraries(qbt_gui PRIVATE
Qt5::WinExtras
PowrProf
)
target_link_libraries(qbt_gui PRIVATE PowrProf)
if (NOT QT6)
target_link_libraries(qbt_gui PRIVATE Qt5::WinExtras)
endif()
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
@ -230,7 +230,5 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") @@ -230,7 +230,5 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
macutilities.h
macutilities.mm
)
target_link_libraries(qbt_gui PRIVATE
objc
)
target_link_libraries(qbt_gui PRIVATE objc)
endif()

Loading…
Cancel
Save