Skip to content

Commit

Permalink
[Port to Qt6] CMakeLists upgrade for qt6 + remove warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
ochurlaud authored and fenuks committed Nov 9, 2024
1 parent 9633697 commit 7416c75
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 70 deletions.
2 changes: 1 addition & 1 deletion 3rdparty/qtiocompressor/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.6)
cmake_minimum_required(VERSION 3.5)

include_directories(${QTINCLUDES} ${ZLIB_INCLUDE_DIRS} ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
ADD_LIBRARY(qtiocompressor STATIC qtiocompressor.cpp)
87 changes: 42 additions & 45 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.5)
project(cantata)
cmake_policy(SET CMP0020 NEW)

Expand All @@ -23,7 +23,7 @@ endif ()


set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
set (QT_MIN_VERSION 5.11)
set (QT_MIN_VERSION 6.5)

set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
set(CPACK_GENERATOR "DEB;RPM;TBZ2")
Expand Down Expand Up @@ -187,31 +187,28 @@ if (TAGLIB_FOUND)
endif ()
else (TAGLIB_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-but-set-variable -Wno-unused-parameter")
set(ENABLE_DEVICES_SUPPORT OFF)
set(ENABLE_DEVICES_SUPPORT OFF)
endif ()

if (NOT MTP_FOUND)
set(ENABLE_UNCACHED_MTP OFF)
set(ENABLE_UNCACHED_MTP OFF)
endif ()

find_package(Qt5 ${QT_MIN_VERSION} COMPONENTS Widgets Xml Network Concurrent Svg Sql REQUIRED)
find_package(Qt6 ${QT_MIN_VERSION} COMPONENTS Core Widgets Xml Network Concurrent Svg Sql REQUIRED)

set(CMAKE_AUTOMOC TRUE)
set(CMAKE_AUTOUIC TRUE)
set(CMAKE_AUTORCC TRUE)
set(CMAKE_CXX_STANDARD 11)

set(QTCORELIBS ${Qt5Core_LIBRARIES})
set(QTNETWORKLIBS ${Qt5Network_LIBRARIES})
set(QTGUILIBS ${Qt5Gui_LIBRARIES})
set(QTLIBS ${QTCORELIBS} ${Qt5Widgets_LIBRARIES} ${QTNETWORKLIBS} ${QTGUILIBS} ${Qt5Xml_LIBRARIES} ${Qt5Concurrent_LIBRARIES} ${Qt5Svg_LIBRARIES} ${Qt5Sql_LIBRARIES})
set(QTINCLUDES ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Network_INCLUDE_DIRS} ${Qt5Xml_INCLUDE_DIRS} ${Qt5Core_INCLUDE_DIRS} ${Qt5Concurrent_INCLUDE_DIRS}
${Qt5Svg_INCLUDE_DIRS} ${Qt5Sql_INCLUDE_DIRS})
add_definitions(${Qt5Widgets_DEFINITIONS} ${Qt5Network_DEFINITIONS} ${Qt5Xml_DEFINITIONS} ${Qt5Concurrent_DEFINITIONS} ${Qt5Svg_DEFINITIONS} ${Qt5Sql_DEFINITIONS})
if (Qt5_POSITION_INDEPENDENT_CODE)
set(CMAKE_CXX_STANDARD 17)

set(QTLIBS Qt6::Core Qt6::Widgets Qt6::Network Qt6::Gui Qt6::Xml Qt6::Concurrent Qt6::Svg Qt6::Sql)
set(QTINCLUDES ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Network_INCLUDE_DIRS} ${Qt6Xml_INCLUDE_DIRS} ${Qt6Core_INCLUDE_DIRS} ${Qt6Concurrent_INCLUDE_DIRS}
${Qt6Svg_INCLUDE_DIRS} ${Qt6Sql_INCLUDE_DIRS})
add_definitions(${Qt6Widgets_DEFINITIONS} ${Qt6Network_DEFINITIONS} ${Qt6Xml_DEFINITIONS} ${Qt6Concurrent_DEFINITIONS} ${Qt6Svg_DEFINITIONS} ${Qt6Sql_DEFINITIONS})
if (Qt6_POSITION_INDEPENDENT_CODE)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt6Widgets_EXECUTABLE_COMPILE_FLAGS}")
endif ()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wpedantic -Wall -Wextra \
Expand All @@ -226,14 +223,14 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
endif()

if (APPLE OR WIN32 OR HAIKU)
get_target_property(QT_QMAKE_EXECUTABLE Qt5::qmake IMPORTED_LOCATION)
exec_program(${QT_QMAKE_EXECUTABLE} ARGS -query QT_INSTALL_TRANSLATIONS OUTPUT_VARIABLE QT_TRANSLATIONS_DIR)
get_target_property(QT_QMAKE_EXECUTABLE Qt6::qmake IMPORTED_LOCATION)
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_TRANSLATIONS OUTPUT_VARIABLE QT_TRANSLATIONS_DIR)
else ()
find_package(Qt5DBus REQUIRED)
find_package(Qt6DBus REQUIRED)
set(QT_QTDBUS_FOUND 1) # required for config.h !!!
set(QTLIBS ${QTLIBS} ${Qt5DBus_LIBRARIES})
set(QTINCLUDES ${QTINCLUDES} ${Qt5DBus_INCLUDE_DIRS})
add_definitions(${Qt5DBus_DEFINITIONS})
set(QTLIBS ${QTLIBS} Qt6::DBus)
set(QTINCLUDES ${QTINCLUDES} ${Qt6DBus_INCLUDE_DIRS})
add_definitions(${Qt6DBus_DEFINITIONS})
endif ()

if (ENABLE_HTTP_STREAM_PLAYBACK)
Expand All @@ -244,11 +241,11 @@ if (ENABLE_HTTP_STREAM_PLAYBACK)
include_directories(${LIBVLC_INCLUDE_DIR})
set(CANTATA_LIBS ${CANTATA_LIBS} ${LIBVLC_LIBRARY})
else ()
find_package(Qt5 ${QT_MIN_VERSION} COMPONENTS Multimedia REQUIRED)
macro_log_feature(Qt5Multimedia_FOUND "Qt5Multimedia" "MPD HTTP stream playback." "http://qtproject.org")
include_directories(${Qt5Multimedia_INCLUDE_DIRS})
add_definitions(${Qt5Multimedia_DEFINITIONS})
set(CANTATA_LIBS ${CANTATA_LIBS} ${Qt5Multimedia_LIBRARIES})
find_package(Qt6 ${QT_MIN_VERSION} COMPONENTS Multimedia REQUIRED)
macro_log_feature(Qt6Multimedia_FOUND "Qt6Multimedia" "MPD HTTP stream playback." "http://qtproject.org")
include_directories(${Qt6Multimedia_INCLUDE_DIRS})
add_definitions(${Qt6Multimedia_DEFINITIONS})
set(CANTATA_LIBS ${CANTATA_LIBS} Qt6::Multimedia)
endif ()
set(CANTATA_SRCS ${CANTATA_SRCS} mpd-interface/httpstream.cpp)
endif ()
Expand All @@ -272,10 +269,10 @@ if (APPLE)
add_definitions(-DMAC_MEDIAPLAYER_FOUND)
endif ()
elseif (WIN32)
find_package(Qt5 COMPONENTS WinExtras REQUIRED)
set(QTINCLUDES ${QTINCLUDES} ${Qt5WinExtras_INCLUDE_DIRS})
set(QTLIBS ${QTLIBS} ${Qt5WinExtras_LIBRARIES})
add_definitions(${Qt5WinExtras_DEFINITIONS})
find_package(Qt6 COMPONENTS WinExtras REQUIRED)
set(QTINCLUDES ${QTINCLUDES} ${Qt6WinExtras_INCLUDE_DIRS})
set(QTLIBS ${QTLIBS} Qt6::WinExtras)
add_definitions(${Qt6WinExtras_DEFINITIONS})
set(CANTATA_SRCS ${CANTATA_SRCS} windows/thumbnailtoolbar.cpp)
endif ()

Expand Down Expand Up @@ -365,16 +362,16 @@ if (QT_QTDBUS_FOUND)
set(CANTATA_SRCS ${CANTATA_SRCS} dbus/mpris.cpp dbus/powermanagement.cpp)
set(CANTATA_SRCS ${CANTATA_SRCS} dbus/notify.cpp)

qt5_add_dbus_adaptor(CANTATA_SRCS dbus/org.mpris.MediaPlayer2.Player.xml dbus/mpris.h Mpris)
qt5_add_dbus_adaptor(CANTATA_SRCS dbus/org.mpris.MediaPlayer2.root.xml dbus/mpris.h Mpris)
qt5_add_dbus_adaptor(CANTATA_SRCS dbus/${PROJECT_REV_URL}.xml gui/mainwindow.h MainWindow)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.Notifications.xml)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.UPower.xml)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.login1.xml)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.gnome.SettingsDaemon.xml)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.gnome.SettingsDaemon.MediaKeys.xml)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.kde.Solid.PowerManagement.PolicyAgent.xml)
qt5_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.PowerManagement.Inhibit.xml)
qt6_add_dbus_adaptor(CANTATA_SRCS dbus/org.mpris.MediaPlayer2.Player.xml dbus/mpris.h Mpris)
qt6_add_dbus_adaptor(CANTATA_SRCS dbus/org.mpris.MediaPlayer2.root.xml dbus/mpris.h Mpris)
qt6_add_dbus_adaptor(CANTATA_SRCS dbus/${PROJECT_REV_URL}.xml gui/mainwindow.h MainWindow)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.Notifications.xml)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.UPower.xml)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.login1.xml)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.gnome.SettingsDaemon.xml)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.gnome.SettingsDaemon.MediaKeys.xml)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.kde.Solid.PowerManagement.PolicyAgent.xml)
qt6_add_dbus_interfaces(CANTATA_SRCS dbus/org.freedesktop.PowerManagement.Inhibit.xml)
endif ()

if (NOT WIN32 AND NOT APPLE)
Expand Down Expand Up @@ -506,14 +503,14 @@ elseif (APPLE)
install(FILES ${BREW_OPENSSL_PATH}/libssl.1.0.0.dylib DESTINATION ${MACOSX_BUNDLE_APP_DIR} RENAME libssl.dylib)
endif()
add_subdirectory(mac)
include(DeployQt5)
include(DeployQt6)
install(PROGRAMS ${CMAKE_BINARY_DIR}/cantata.app/Contents/MacOS/cantata DESTINATION ${MACOSX_BUNDLE_APP_DIR})
# Create our own plist file to enable HighDPI support
configure_file(mac/Info.plist.cmake ${CMAKE_CURRENT_BINARY_DIR}/mac/Info.plist)
configure_file(mac/dmg/create-dmg.sh.in ${CMAKE_CURRENT_BINARY_DIR}/mac/create-dmg.sh)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mac/Info.plist DESTINATION ${CANTATA_APP_CONTENTS_DIR})
if (TAGLIB_FOUND)
# *NEED* to install cantata-replagain/cantata-tags *before* install_qt5_executable fix'es the bundle
# *NEED* to install cantata-replagain/cantata-tags *before* install_qt6_executable fix'es the bundle
# If we install from their own CMakeLists.txt then they are installed *after* the fix-up, and so link
# to the build libs not the packaged ones!
if (FFMPEG_FOUND OR MPG123_FOUND)
Expand All @@ -522,9 +519,9 @@ elseif (APPLE)
install(PROGRAMS ${CMAKE_BINARY_DIR}/tags/cantata-tags DESTINATION ${MACOSX_BUNDLE_APP_DIR})
endif (TAGLIB_FOUND)
if (ENABLE_HTTP_STREAM_PLAYBACK AND NOT ENABLE_LIBVLC)
install_qt5_executable(Cantata.app "qjpeg;qsvg;qsvgicon;qcocoa;qmacstyle;qsqlite;qavfmediaplayer")
install_qt6_executable(Cantata.app "qjpeg;qsvg;qsvgicon;qcocoa;qmacstyle;qsqlite;qavfmediaplayer")
else (ENABLE_HTTP_STREAM_PLAYBACK AND NOT ENABLE_LIBVLC)
install_qt5_executable(Cantata.app "qjpeg;qsvg;qsvgicon;qcocoa;qmacstyle;qsqlite")
install_qt6_executable(Cantata.app "qjpeg;qsvg;qsvgicon;qcocoa;qmacstyle;qsqlite")
endif (ENABLE_HTTP_STREAM_PLAYBACK AND NOT ENABLE_LIBVLC)
elseif (HAIKU)
ADD_EXECUTABLE(cantata ${CANTATA_SRCS})
Expand Down
2 changes: 1 addition & 1 deletion replaygain/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ if (FFMPEG_FOUND OR MPG123_FOUND)
if (MPG123_FOUND)
target_link_libraries(cantata-replaygain ${MPG123_LIBRARIES})
endif ()
target_link_libraries(cantata-replaygain ${QTCORELIBS})
target_link_libraries(cantata-replaygain Qt6::Core)
if (UNIX AND NOT APPLE)
target_link_libraries(cantata-replaygain -lpthread)
endif ()
Expand Down
4 changes: 2 additions & 2 deletions support/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ set(SUPPORT_SRCS ${SUPPORT_SRCS} pathrequester.cpp kmessagewidget.cpp dialog.cpp
shortcutssettingswidget.cpp keysequencewidget.cpp acceleratormanager.cpp urllabel.cpp)
set(SUPPORT_UIS shortcutssettingswidget.ui)

qt5_wrap_ui(SUPPORT_UI_HDRS ${SUPPORT_UIS})
qt5_add_resources(SUPPORT_RC_SRCS support.qrc)
qt6_wrap_ui(SUPPORT_UI_HDRS ${SUPPORT_UIS})
qt6_add_resources(SUPPORT_RC_SRCS support.qrc)

add_library(support STATIC ${SUPPORT_SRCS} ${SUPPORT_UI_HDRS} ${SUPPORT_RC_SRCS})
2 changes: 1 addition & 1 deletion tags/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ else ()
endif ()

add_definitions(-DCANTATA_TAG_SERVER -DCANTATA_NO_UI_FUNCTIONS)
target_link_libraries(cantata-tags ${TAGLIB_LIBRARIES} ${QTGUILIBS} ${QTCORELIBS} ${QTNETWORKLIBS})
target_link_libraries(cantata-tags ${TAGLIB_LIBRARIES} Qt6::Gui Qt6::Core Qt6::Network)
if (TAGLIB-EXTRAS_FOUND)
target_link_libraries(cantata-tags ${TAGLIB-EXTRAS_LIBRARIES})
include_directories(${TAGLIB-EXTRAS_INCLUDES})
Expand Down
30 changes: 10 additions & 20 deletions translations/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,28 +1,18 @@
file(GLOB TS_FILES cantata_*.ts)
foreach (TS_FILE ${TS_FILES})
get_filename_component(TRANS ${TS_FILE} NAME_WE)
list(APPEND CANTATA_TRANS "${TRANS}")
endforeach ()

find_package(Qt5LinguistTools ${QT_MIN_VERSION} QUIET)
find_package(Qt6LinguistTools ${QT_MIN_VERSION} QUIET)

if (Qt5LinguistTools_FOUND)
if (Qt6LinguistTools_FOUND)
set(catalogname cantata)
add_custom_target(translations ALL)
foreach(TRANS ${CANTATA_TRANS})
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TRANS}.ts)
set(CUR_TS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/${TRANS}.ts)
set(CUR_QM_FILE ${CMAKE_CURRENT_BINARY_DIR}/${TRANS}.qm)
add_custom_command(TARGET translations
COMMAND ${Qt5_LRELEASE_EXECUTABLE} ARGS ${CUR_TS_FILE} -qm ${CUR_QM_FILE}
DEPENDS ${CUR_TS_FILE})
if (WIN32)
install(FILES ${CUR_QM_FILE} DESTINATION ${CMAKE_INSTALL_PREFIX}/translations/)
elseif (APPLE)
install(FILES ${CUR_QM_FILE} DESTINATION ${MACOSX_BUNDLE_RESOURCES}/translations/)
else ()
install(FILES ${CUR_QM_FILE} DESTINATION ${SHARE_INSTALL_PREFIX}/cantata/translations/)
endif ()
qt6_add_lrelease(translations TS_FILES ${TS_FILES} QM_FILES_OUTPUT_VARIABLE QM_FILES)
foreach(CUR_QM_FILE ${QM_FILES})
if (WIN32)
install(FILES ${CUR_QM_FILE} DESTINATION ${CMAKE_INSTALL_PREFIX}/translations/)
elseif (APPLE)
install(FILES ${CUR_QM_FILE} DESTINATION ${MACOSX_BUNDLE_RESOURCES}/translations/)
else ()
install(FILES ${CUR_QM_FILE} DESTINATION ${SHARE_INSTALL_PREFIX}/cantata/translations/)
endif ()
endforeach()
else ()
Expand Down

0 comments on commit 7416c75

Please sign in to comment.