-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
105 lines (78 loc) · 3.13 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
set(PROJECT_NAME Player)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -DLLVM_ENABLE_PROJECTS=lld")
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)
project(${PROJECT_NAME})
set(PCH_HEADER src/precompiled.h)
set(widgets_files
res/Resources.qrc
src/Widgets/ControlsPanel.cpp
src/Widgets/Window.cpp
src/Widgets/InfoWidget.cpp
src/Widgets/ImageWidget.cpp
src/Widgets/Playlist/PlaylistView.cpp
src/Widgets/Playlist/PlaylistControl.cpp
src/Widgets/Playlist/SongsWidget.cpp
src/Widgets/Controls/TimeSlider.cpp
src/Widgets/Controls/LineEdit.cpp
)
set(core_files
src/Core/Tools.cpp
src/Core/Config.cpp
src/Core/EventHandler.cpp
src/Core/Cache.cpp
src/Core/Globals.cpp
src/Core/Audio/AudioServer.h
src/Core/TagReaders/ID3v2Reader.cpp
src/Core/Playlist/PlaylistManager.cpp
src/Core/Playlist/PlaylistModel.cpp
src/Core/Playlist/PlaylistProxyModel.cpp
src/Core/Playlist/History.cpp
)
find_package(Qt6 COMPONENTS Core Widgets Sql Concurrent REQUIRED)
find_package(PkgConfig REQUIRED)
find_package(SndFile)
pkg_check_modules(taglib REQUIRED IMPORTED_TARGET taglib)
if(UNIX AND NOT APPLE)
find_package(Qt6 COMPONENTS DBus REQUIRED)
pkg_check_modules(libpipewire REQUIRED IMPORTED_TARGET libpipewire-0.3)
list(APPEND core_files
src/Core/Audio/PipeWire.cpp
src/Core/DBus/MediaPlayer2.cpp
)
qt6_add_dbus_adaptor(core_files
src/Core/DBus/org.mpris.MediaPlayer2.xml
Core/DBus/MediaPlayer2.h
MediaPlayer2
mprisroot MPrisRoot)
qt6_add_dbus_adaptor(core_files
src/Core/DBus/org.mpris.MediaPlayer2.Player.xml
Core/DBus/MediaPlayer2.h
MediaPlayer2
mprisplayer MPrisPlayer)
endif()
add_executable(${PROJECT_NAME} src/main.cpp ${core_files} ${widgets_files} ${PCH_SOURCE})
target_precompile_headers(${PROJECT_NAME} PRIVATE ${PCH_HEADER})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_BINARY_DIR})
target_link_libraries(${PROJECT_NAME} PRIVATE Qt::Core Qt::Widgets Qt6::Sql Qt6::Concurrent PkgConfig::taglib SndFile::sndfile)
if(UNIX AND NOT APPLE)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt::DBus PkgConfig::libpipewire)
endif()
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "customplayer")
install(TARGETS ${PROJECT_NAME} DESTINATION /usr/bin)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/icon48x48.png
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps/
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
RENAME customplayer.png)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/icon.svg
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps/
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
RENAME customplayer.svg)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/customplayer.desktop
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications/
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)