-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
114 lines (100 loc) · 4.43 KB
/
Copy pathCMakeLists.txt
File metadata and controls
114 lines (100 loc) · 4.43 KB
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
cmake_minimum_required(VERSION 3.20)
project(remoct VERSION 0.1.0 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(MSYS2_PREFIX "C:/msys64/ucrt64")
message(STATUS "MSYS2 prefix: ${MSYS2_PREFIX}")
list(APPEND CMAKE_PREFIX_PATH "${MSYS2_PREFIX}")
# ── Sources ────────────────────────────────────────────────────────────────
set(REMOCT_SOURCES
src/main.cpp
src/UIManager.cpp
src/AudioManager.cpp
src/PlaylistManager.cpp
src/Config.cpp
src/LrcData.cpp
src/Toast.cpp
src/CDSource.cpp
src/MBLookup.cpp
src/CDRipper.cpp
)
add_executable(remoct ${REMOCT_SOURCES})
target_include_directories(remoct PRIVATE
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/lib
${MSYS2_PREFIX}/include
${MSYS2_PREFIX}/include/ncursesw
${FLAC_INCLUDE}
${LAME_INCLUDE}
${EBUR128_INCLUDE}
)
# ── Compile definitions ────────────────────────────────────────────────────
target_compile_definitions(remoct PRIVATE
NCURSES_STATIC
UNICODE
_UNICODE
)
# ── libFLAC ────────────────────────────────────────────────────────────────
find_library(FLAC_LIB NAMES FLAC
PATHS "${MSYS2_PREFIX}/lib" REQUIRED)
find_path(FLAC_INCLUDE NAMES FLAC/stream_encoder.h
PATHS "${MSYS2_PREFIX}/include" REQUIRED)
message(STATUS "libFLAC: ${FLAC_LIB}")
# ── libmp3lame ─────────────────────────────────────────────────────────────
find_library(LAME_LIB NAMES mp3lame
PATHS "${MSYS2_PREFIX}/lib" REQUIRED)
find_path(LAME_INCLUDE NAMES lame/lame.h
PATHS "${MSYS2_PREFIX}/include" REQUIRED)
message(STATUS "lame: ${LAME_LIB}")
# ── libebur128 (ReplayGain EBU R128) ──────────────────────────────────────
find_library(EBUR128_LIB NAMES ebur128
PATHS "${MSYS2_PREFIX}/lib" REQUIRED)
find_path(EBUR128_INCLUDE NAMES ebur128.h
PATHS "${MSYS2_PREFIX}/include" REQUIRED)
message(STATUS "libebur128: ${EBUR128_LIB}")
find_library(NCURSESW_LIB NAMES ncursesw
PATHS "${MSYS2_PREFIX}/lib" REQUIRED)
find_library(PANELW_LIB NAMES panelw
PATHS "${MSYS2_PREFIX}/lib")
message(STATUS "ncursesw: ${NCURSESW_LIB}")
# ── TagLib ─────────────────────────────────────────────────────────────────
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(TAGLIB taglib)
endif()
if(NOT TAGLIB_FOUND)
find_library(TAGLIB_LIB NAMES tag taglib
PATHS "${MSYS2_PREFIX}/lib" REQUIRED)
set(TAGLIB_INCLUDE_DIRS "${MSYS2_PREFIX}/include/taglib")
set(TAGLIB_LIBRARIES "${TAGLIB_LIB}")
message(STATUS "TagLib (manual): ${TAGLIB_LIB}")
else()
message(STATUS "TagLib (pkg-config): ${TAGLIB_LIBRARIES}")
endif()
target_include_directories(remoct PRIVATE ${TAGLIB_INCLUDE_DIRS})
# ── Link ───────────────────────────────────────────────────────────────────
target_link_libraries(remoct PRIVATE
${NCURSESW_LIB}
$<$<BOOL:${PANELW_LIB}>:${PANELW_LIB}>
${TAGLIB_LIBRARIES}
${FLAC_LIB}
${LAME_LIB}
${EBUR128_LIB}
$<$<PLATFORM_ID:Windows>:winmm>
$<$<PLATFORM_ID:Windows>:ws2_32>
$<$<PLATFORM_ID:Windows>:ole32>
$<$<PLATFORM_ID:Windows>:wininet>
$<$<PLATFORM_ID:Windows>:shell32>
)
# ── Compiler warnings ──────────────────────────────────────────────────────
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(remoct PRIVATE
-Wall -Wextra -Wpedantic
-Wno-unused-parameter
-Wno-old-style-cast
)
endif()
set_target_properties(remoct PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
install(TARGETS remoct RUNTIME DESTINATION bin)