CMake: Don't split GUI code into several libraries

This commit is contained in:
Vladimir Golovnev (Glassez) 2020-04-30 11:34:41 +03:00
commit 642bf7b8a6
No known key found for this signature in database
GPG key ID: 52A2C7DEE2DFA6F7
13 changed files with 437 additions and 506 deletions

View file

@ -47,7 +47,7 @@ set(requiredLibtorrentVersion 1.1.10)
if (WIN32) if (WIN32)
include(winconf) include(winconf)
endif(WIN32) endif()
# we need options here, at the top level, because they are used not only in "src" subdir, but in the "dist" dir too # we need options here, at the top level, because they are used not only in "src" subdir, but in the "dist" dir too

9
dist/CMakeLists.txt vendored
View file

@ -2,11 +2,8 @@ find_package(Qt5Widgets ${requiredQtVersion}) # to conditionally install desktop
if (APPLE) if (APPLE)
add_subdirectory(mac) add_subdirectory(mac)
else (APPLE) elseif (UNIX)
if (UNIX)
add_subdirectory(unix) add_subdirectory(unix)
endif (UNIX) elseif (WIN32)
if (WIN32)
add_subdirectory(windows) add_subdirectory(windows)
endif (WIN32) endif()
endif (APPLE)

View file

@ -18,10 +18,7 @@ upgrade.cpp
) )
target_include_directories(qBittorrent PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(qBittorrent PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
target_link_libraries(qBittorrent target_link_libraries(qBittorrent PRIVATE qbt_base)
PRIVATE
qbt_base
)
set_target_properties(qBittorrent set_target_properties(qBittorrent
PROPERTIES PROPERTIES
@ -53,49 +50,53 @@ qt5_add_resources(QBT_APP_RESOURCE_SOURCE ${QBT_APP_RESOURCES})
if (WIN32) if (WIN32)
if (MINGW) if (MINGW)
target_sources(qBittorrent PRIVATE ../qbittorrent_mingw.rc) target_sources(qBittorrent PRIVATE ../qbittorrent_mingw.rc)
else (MINGW) else()
target_sources(qBittorrent PRIVATE ../qbittorrent.rc) target_sources(qBittorrent PRIVATE ../qbittorrent.rc)
endif (MINGW) endif()
target_sources(qBittorrent PRIVATE ../qbittorrent.exe.manifest) target_sources(qBittorrent PRIVATE ../qbittorrent.exe.manifest)
endif (WIN32) endif()
if (STACKTRACE) if (STACKTRACE)
if (UNIX) if (UNIX)
target_sources(qBittorrent PRIVATE stacktrace.h) target_sources(qBittorrent PRIVATE stacktrace.h)
else (UNIX) else()
target_sources(qBittorrent PRIVATE stacktrace_win.h) target_sources(qBittorrent PRIVATE stacktrace_win.h)
if (Qt5Widgets_FOUND) if (Qt5Widgets_FOUND)
target_sources(qBittorrent PRIVATE stacktracedialog.cpp stacktracedialog.h) target_sources(qBittorrent PRIVATE stacktracedialog.cpp stacktracedialog.h)
endif (Qt5Widgets_FOUND) endif()
if (MSVC) if (MSVC)
if (NOT "${WINXXBITS}" STREQUAL "Win64") if (NOT "${WINXXBITS}" STREQUAL "Win64")
# i686 arch requires frame pointer preservation # i686 arch requires frame pointer preservation
add_compile_options(-Oy-) add_compile_options(-Oy-)
endif (NOT "${WINXXBITS}" STREQUAL "Win64") endif()
add_compile_options(-Zi) add_compile_options(-Zi)
target_link_libraries(qBittorrent PUBLIC dbghelp -DEBUG) target_link_libraries(qBittorrent PUBLIC dbghelp -DEBUG)
else (MSVC) else()
if (NOT "${WINXXBITS}" STREQUAL "Win64") if (NOT "${WINXXBITS}" STREQUAL "Win64")
add_compile_options(-fno-omit-frame-pointer) add_compile_options(-fno-omit-frame-pointer)
endif (NOT "${WINXXBITS}" STREQUAL "Win64") endif()
target_link_libraries(qBittorrent PUBLIC dbghelp -Wl,--export-all-symbols) target_link_libraries(qBittorrent PUBLIC dbghelp -Wl,--export-all-symbols)
endif (MSVC) endif()
endif (UNIX) endif()
endif (STACKTRACE) endif()
if (Qt5Widgets_FOUND) if (Qt5Widgets_FOUND)
target_link_libraries(qBittorrent PRIVATE qbt_searchengine qbt_gui) target_link_libraries(qBittorrent PRIVATE qbt_gui)
set_target_properties(qBittorrent set_target_properties(qBittorrent
PROPERTIES PROPERTIES
OUTPUT_NAME qbittorrent OUTPUT_NAME qbittorrent
WIN32_EXECUTABLE True WIN32_EXECUTABLE True
) )
else(Qt5Widgets_FOUND) else()
set_target_properties(qBittorrent set_target_properties(qBittorrent
PROPERTIES PROPERTIES
OUTPUT_NAME qbittorrent-nox OUTPUT_NAME qbittorrent-nox
) )
endif (Qt5Widgets_FOUND) endif()
if (NOT DISABLE_WEBUI) if (NOT DISABLE_WEBUI)
target_link_libraries(qBittorrent PRIVATE qbt_webui) target_link_libraries(qBittorrent PRIVATE qbt_webui)
@ -127,9 +128,8 @@ if (APPLE)
${QT_TR_DIR}/qt_zh_CN.qm ${QT_TR_DIR}/qt_zh_CN.qm
) )
list(APPEND QBT_APP_RESOURCE_SOURCE ${QT_TRANSLATIONS}) list(APPEND QBT_APP_RESOURCE_SOURCE ${QT_TRANSLATIONS})
set_source_files_properties(${QT_TRANSLATIONS} set_source_files_properties(${QT_TRANSLATIONS} PROPERTIES MACOSX_PACKAGE_LOCATION translations)
PROPERTIES MACOSX_PACKAGE_LOCATION translations) endif()
endif (APPLE)
target_sources(qBittorrent PRIVATE ${QBT_QM_FILES} ${QBT_APP_RESOURCE_SOURCE}) target_sources(qBittorrent PRIVATE ${QBT_QM_FILES} ${QBT_APP_RESOURCE_SOURCE})
@ -146,15 +146,16 @@ if (APPLE)
MACOSX_BUNDLE_BUNDLE_NAME "${qbt_BUNDLE_NAME}" MACOSX_BUNDLE_BUNDLE_NAME "${qbt_BUNDLE_NAME}"
MACOSX_BUNDLE_INFO_PLIST ${qBittorrent_BINARY_DIR}/dist/mac/Info.plist MACOSX_BUNDLE_INFO_PLIST ${qBittorrent_BINARY_DIR}/dist/mac/Info.plist
) )
endif (APPLE) endif()
# installation # installation
install(TARGETS qBittorrent install(TARGETS qBittorrent
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
BUNDLE DESTINATION . BUNDLE DESTINATION .
COMPONENT runtime) COMPONENT runtime
)
if (Qt5Widgets_FOUND AND APPLE) if (Qt5Widgets_FOUND AND APPLE)
find_package(Qt5Svg REQUIRED) find_package(Qt5Svg REQUIRED)
include(bundle) include(bundle)
endif (Qt5Widgets_FOUND AND APPLE) endif()

View file

@ -164,10 +164,6 @@ target_link_libraries(qbt_base
Qt5::Core Qt5::Network Qt5::Xml Qt5::Core Qt5::Network Qt5::Xml
) )
if (Qt5Widgets_FOUND)
target_link_libraries(qbt_base PUBLIC Qt5::Gui Qt5::Widgets)
endif (Qt5Widgets_FOUND)
if (Qt5DBus_FOUND) if (Qt5DBus_FOUND)
target_link_libraries(qbt_base PRIVATE Qt5::DBus) target_link_libraries(qbt_base PRIVATE Qt5::DBus)
endif() endif()
@ -177,4 +173,4 @@ if (APPLE)
find_library(Carbon_LIBRARY Carbon) find_library(Carbon_LIBRARY Carbon)
find_library(AppKit_LIBRARY AppKit) find_library(AppKit_LIBRARY AppKit)
target_link_libraries(qbt_base PRIVATE ${Carbon_LIBRARY} ${IOKit_LIBRARY} ${AppKit_LIBRARY}) target_link_libraries(qbt_base PRIVATE ${Carbon_LIBRARY} ${IOKit_LIBRARY} ${AppKit_LIBRARY})
endif (APPLE) endif()

View file

@ -38,6 +38,7 @@
#include <shlobj.h> #include <shlobj.h>
#endif #endif
#include <QCoreApplication>
#include <QDateTime> #include <QDateTime>
#include <QDir> #include <QDir>
#include <QLocale> #include <QLocale>
@ -47,12 +48,6 @@
#include <QTime> #include <QTime>
#include <QVariant> #include <QVariant>
#ifndef DISABLE_GUI
#include <QApplication>
#else
#include <QCoreApplication>
#endif
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <QRegularExpression> #include <QRegularExpression>
#endif #endif

View file

@ -1,14 +1,6 @@
set(CMAKE_AUTORCC True) set(CMAKE_AUTORCC True)
set(CMAKE_AUTOUIC True) set(CMAKE_AUTOUIC True)
add_library(qbt_gui_headers INTERFACE)
target_include_directories(qbt_gui_headers INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(properties)
add_subdirectory(powermanagement)
add_subdirectory(rss)
add_subdirectory(search)
add_library(qbt_gui STATIC add_library(qbt_gui STATIC
# headers # headers
aboutdialog.h aboutdialog.h
@ -28,9 +20,6 @@ fspathedit.h
hidabletabwidget.h hidabletabwidget.h
ipsubnetwhitelistoptionsdialog.h ipsubnetwhitelistoptionsdialog.h
lineedit.h lineedit.h
log/logfiltermodel.h
log/loglistview.h
log/logmodel.h
mainwindow.h mainwindow.h
optionsdialog.h optionsdialog.h
previewlistdelegate.h previewlistdelegate.h
@ -83,9 +72,6 @@ fspathedit.cpp
hidabletabwidget.cpp hidabletabwidget.cpp
ipsubnetwhitelistoptionsdialog.cpp ipsubnetwhitelistoptionsdialog.cpp
lineedit.cpp lineedit.cpp
log/logfiltermodel.cpp
log/loglistview.cpp
log/logmodel.cpp
mainwindow.cpp mainwindow.cpp
optionsdialog.cpp optionsdialog.cpp
previewlistdelegate.cpp previewlistdelegate.cpp
@ -140,37 +126,40 @@ torrentcategorydialog.ui
torrentcreatordialog.ui torrentcreatordialog.ui
trackerentriesdialog.ui trackerentriesdialog.ui
updownratiodialog.ui updownratiodialog.ui
# resources
about.qrc
) )
target_link_libraries(qbt_gui if (WIN32 OR APPLE)
PRIVATE target_sources(qbt_gui PRIVATE programupdater.h programupdater.cpp)
qbt_powermanagement qbt_rss qbt_properties qbt_searchengine endif()
qbt_base
)
target_include_directories(qbt_gui add_subdirectory(log)
PRIVATE ../app add_subdirectory(properties)
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} add_subdirectory(powermanagement)
) add_subdirectory(rss)
add_subdirectory(search)
if (UNIX AND Qt5DBus_FOUND) if (UNIX AND Qt5DBus_FOUND)
add_subdirectory(qtnotify) add_subdirectory(qtnotify)
target_link_libraries(qbt_gui PRIVATE qbt_qtnotify) target_link_libraries(qbt_gui PRIVATE Qt5::DBus)
endif (UNIX AND Qt5DBus_FOUND) endif()
target_link_libraries(qbt_gui
PRIVATE
qbt_base
PUBLIC
Qt5::Gui Qt5::Widgets
)
if (APPLE) if (APPLE)
target_sources(qbt_gui PRIVATE macutilities.h macutilities.mm) target_sources(qbt_gui PRIVATE macutilities.h macutilities.mm)
find_package(Qt5 ${requiredQtVersion} REQUIRED COMPONENTS MacExtras) find_package(Qt5 ${requiredQtVersion} REQUIRED COMPONENTS MacExtras)
target_link_libraries(qbt_gui PRIVATE Qt5::MacExtras objc) target_link_libraries(qbt_gui PRIVATE Qt5::MacExtras objc)
endif (APPLE) endif()
if (WIN32 OR APPLE)
target_sources(qbt_gui PRIVATE programupdater.h programupdater.cpp)
endif (WIN32 OR APPLE)
qbt_target_sources(qBittorrent PRIVATE about.qrc)
if (WIN32) if (WIN32)
find_package(Qt5 ${requiredQtVersion} REQUIRED COMPONENTS WinExtras) find_package(Qt5 ${requiredQtVersion} REQUIRED COMPONENTS WinExtras)
target_link_libraries(qbt_gui PRIVATE Qt5::WinExtras) target_link_libraries(qbt_gui PRIVATE Qt5::WinExtras PowrProf)
endif(WIN32) endif()

View file

@ -0,0 +1,11 @@
target_sources(qbt_gui PRIVATE
# headers
logfiltermodel.h
loglistview.h
logmodel.h
#sources
logfiltermodel.cpp
loglistview.cpp
logmodel.cpp
)

View file

@ -1,23 +1,8 @@
add_library(qbt_powermanagement STATIC target_sources(qbt_gui PRIVATE powermanagement.h powermanagement.cpp)
# headers
powermanagement.h
# sources
powermanagement.cpp
)
target_link_libraries(qbt_powermanagement PUBLIC Qt5::Core)
set_target_properties(qbt_powermanagement PROPERTIES AUTOUIC False AUTORCC False)
target_include_directories(qbt_powermanagement PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
if (UNIX AND Qt5DBus_FOUND) if (UNIX AND Qt5DBus_FOUND)
find_package(X11) find_package(X11)
if (X11_FOUND) if (X11_FOUND)
target_sources(qbt_powermanagement PRIVATE powermanagement_x11.h powermanagement_x11.cpp) target_sources(qbt_gui PRIVATE powermanagement_x11.h powermanagement_x11.cpp)
target_link_libraries(qbt_powermanagement PRIVATE Qt5::DBus) endif()
endif (X11_FOUND) endif()
endif (UNIX AND Qt5DBus_FOUND)
if (WIN32)
target_link_libraries(qbt_powermanagement PRIVATE PowrProf)
endif (WIN32)

View file

@ -1,4 +1,4 @@
add_library(qbt_properties STATIC target_sources(qbt_gui PRIVATE
# headers # headers
downloadedpiecesbar.h downloadedpiecesbar.h
peerlistdelegate.h peerlistdelegate.h
@ -36,17 +36,3 @@ peersadditiondialog.ui
propertieswidget.ui propertieswidget.ui
trackersadditiondialog.ui trackersadditiondialog.ui
) )
target_link_libraries(qbt_properties
PRIVATE
qbt_gui_headers
PUBLIC
qbt_base Qt5::Widgets
)
target_include_directories(qbt_properties
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
)

View file

@ -1,11 +1 @@
add_library(qbt_qtnotify STATIC target_sources(qbt_gui PRIVATE notifications.h notifications.cpp)
# headers
notifications.h
# sources
notifications.cpp
)
set_target_properties(qbt_qtnotify PROPERTIES AUTOUIC False AUTORCC False)
target_link_libraries(qbt_qtnotify PUBLIC Qt5::DBus)
target_include_directories(qbt_qtnotify PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

View file

@ -1,4 +1,4 @@
add_library(qbt_rss STATIC target_sources(qbt_gui PRIVATE
# headers # headers
articlelistwidget.h articlelistwidget.h
automatedrssdownloader.h automatedrssdownloader.h
@ -17,11 +17,3 @@ rsswidget.cpp
automatedrssdownloader.ui automatedrssdownloader.ui
rsswidget.ui rsswidget.ui
) )
target_include_directories(qbt_rss PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(qbt_rss
PRIVATE
qbt_gui_headers
PUBLIC
qbt_base Qt5::Gui Qt5::Widgets Qt5::Network
)

View file

@ -1,4 +1,4 @@
add_library(qbt_searchengine STATIC target_sources(qbt_gui PRIVATE
# headers # headers
pluginselectdialog.h pluginselectdialog.h
pluginsourcedialog.h pluginsourcedialog.h
@ -20,14 +20,3 @@ pluginselectdialog.ui
pluginsourcedialog.ui pluginsourcedialog.ui
searchwidget.ui searchwidget.ui
) )
set(QBT_SEARCHENGINE_RESOURCES
# search.qrc
)
target_link_libraries(qbt_searchengine
PUBLIC
qbt_base
PRIVATE
qbt_gui_headers
)