1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
|
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
# KDE Application Version, managed by KDE release team automatically
# https://community.kde.org/Guidelines_and_HOWTOs/Application_Versioning
set (RELEASE_SERVICE_VERSION_MAJOR "25")
set (RELEASE_SERVICE_VERSION_MINOR "08")
set (RELEASE_SERVICE_VERSION_MICRO "2")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(juk VERSION ${RELEASE_SERVICE_VERSION})
set(KF6_MIN_VERSION "5.240.0")
# Any higher and many Qt keywords get disabled
set(KDE_COMPILERSETTINGS_LEVEL "5.84.0")
find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${ECM_MODULE_PATH})
include(CMakePushCheckState)
include(CheckIncludeFileCXX)
include(KDEInstallDirs)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings NO_POLICY_SCOPE)
include(FeatureSummary)
include(ECMInstallIcons)
include(ECMAddAppIcon)
include(ECMQtDeclareLoggingCategory)
find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Concurrent Gui Svg Multimedia Network Test Widgets)
find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
CoreAddons
Completion
Config
Crash
GlobalAccel
I18n
IconThemes
DBusAddons
DocTools
KIO
JobWidgets
Notifications
TextWidgets
XmlGui
Wallet
WidgetsAddons
WindowSystem
StatusNotifierItem
)
find_package(Taglib 1.6 REQUIRED)
add_subdirectory( doc )
add_subdirectory( tests )
add_subdirectory( pics )
#set_package_properties(FEATURE PROPERTIES DESCRIPTION "A library for developing MusicBrainz enabled tagging applications" URL "https://wiki.musicbrainz.org/History:libtunepimp" TYPE OPTIONAL PURPOSE "Provides MusicBrainz tagging in Juk.")
# TODO: tunepimp is fully unsupported, replace this when tunepimp is replaced
# with whatever is actually current this decade.
set(HAVE_TUNEPIMP 0)
########### next target ###############
add_definitions(-DQT_STL -DQT_NO_URL_CAST_FROM_STRING)
configure_file (config-juk.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-juk.h )
add_executable(juk
advancedsearchdialog.cpp
slider.cpp
svghandler.cpp
volumepopupbutton.cpp
actioncollection.cpp
cache.cpp
categoryreaderinterface.cpp
collectionlist.cpp
coverinfo.cpp
dbuscollectionproxy.cpp
deletedialog.cpp
directorylist.cpp
directoryloader.cpp
dynamicplaylist.cpp
exampleoptions.cpp
folderplaylist.cpp
filehandle.cpp
filerenamer.cpp
filerenameroptions.cpp
filerenamerconfigdlg.cpp
historyplaylist.cpp
iconsupport.cpp
juk.cpp
juktag.cpp
keydialog.cpp
lyricswidget.cpp
main.cpp
mediafiles.cpp
mpris2/mediaplayer2.cpp
mpris2/mediaplayer2player.cpp
mpris2/mpris2.cpp
nowplaying.cpp
playermanager.cpp
playlist.cpp
playlistbox.cpp
playlistcollection.cpp
playlistinterface.cpp
playlistitem.cpp
playlistsearch.cpp
playlistsharedsettings.cpp
playlistsplitter.cpp
scrobbler.cpp
scrobbleconfigdlg.cpp
searchplaylist.cpp
searchwidget.cpp
slideraction.cpp
statuslabel.cpp
stringshare.cpp
systemtray.cpp
tageditor.cpp
tagguesser.cpp
tagguesserconfigdlg.cpp
tagrenameroptions.cpp
tagtransactionmanager.cpp
treeviewitemplaylist.cpp
upcomingplaylist.cpp
viewmode.cpp
juk.qrc
)
ecm_qt_declare_logging_category(juk HEADER juk_debug.h
IDENTIFIER JUK_LOG CATEGORY_NAME org.kde.juk)
set(JUK_DBUS_SRC "")
qt_add_dbus_adaptor(JUK_DBUS_SRC org.kde.juk.collection.xml
dbuscollectionproxy.h DBusCollectionProxy )
qt_add_dbus_adaptor(JUK_DBUS_SRC org.kde.juk.player.xml playermanager.h PlayerManager)
qt_add_dbus_adaptor(JUK_DBUS_SRC org.kde.juk.search.xml searchwidget.h SearchWidget)
target_sources(juk PRIVATE ${JUK_DBUS_SRC})
ki18n_wrap_ui(juk
filerenamerbase.ui
filerenameroptionsbase.ui
directorylistbase.ui
tagguesserconfigdlgwidget.ui
exampleoptionsbase.ui
deletedialogbase.ui
tageditor.ui
)
file(GLOB ICONS_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/*-apps-juk.png")
ecm_add_app_icon(juk ICONS ${ICONS_SRCS})
kde_target_enable_exceptions(juk PRIVATE)
target_compile_definitions(juk PRIVATE QT_USE_QSTRINGBUILDER)
set_target_properties(juk PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
)
if(NOT MSVC AND NOT ( WIN32 AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" ) )
set( LIBMATH m )
endif()
target_link_libraries(juk ${LIBMATH}
Qt::Concurrent
Qt::Gui
Qt::Svg
Qt::Widgets
Qt::Multimedia
Qt::Network
KF6::ConfigCore
KF6::CoreAddons
KF6::Completion
KF6::Crash
KF6::DBusAddons
KF6::GlobalAccel
KF6::KIOCore
KF6::KIOWidgets
KF6::KIOFileWidgets
KF6::JobWidgets
KF6::Notifications
KF6::I18n
KF6::IconThemes
KF6::TextWidgets
KF6::XmlGui
KF6::WindowSystem
KF6::WidgetsAddons
KF6::Wallet
KF6::StatusNotifierItem
Taglib::Taglib
)
if(TUNEPIMP_FOUND)
target_link_libraries(juk ${TUNEPIMP_LIBRARIES})
endif(TUNEPIMP_FOUND)
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
install(TARGETS juk ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
########### install files ###############
install( PROGRAMS org.kde.juk.desktop DESTINATION ${KDE_INSTALL_APPDIR} )
install(
FILES juk.notifyrc
DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}
)
install( FILES org.kde.juk.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
install( PROGRAMS jukservicemenu.desktop DESTINATION ${KDE_INSTALL_DATADIR}/kio/servicemenus )
install( FILES org.kde.juk.collection.xml org.kde.juk.player.xml org.kde.juk.search.xml DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} )
ki18n_install(po)
kdoctools_install(po)
ecm_install_icons(ICONS
128-apps-juk.png
16-apps-juk.png
32-apps-juk.png
48-apps-juk.png
64-apps-juk.png
DESTINATION ${KDE_INSTALL_ICONDIR}
THEME hicolor
)
|