-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
121 lines (98 loc) · 3.55 KB
/
CMakeLists.txt
File metadata and controls
121 lines (98 loc) · 3.55 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
115
116
117
118
119
120
121
cmake_minimum_required(VERSION 3.20)
project(libdlp VERSION 0.1.2 LANGUAGES CXX)
# ====================================================
# Packages
# ====================================================
find_package(lexy CONFIG REQUIRED)
find_package(pugixml CONFIG REQUIRED)
find_package(yyjson CONFIG REQUIRED)
# ====================================================
# STD CPP Options
# ====================================================
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# ====================================================
# Files
# ====================================================
set(DLP_HEADERS
include/dlp/Parser.hpp
include/dlp/File.hpp
include/dlp/Export.hpp
include/dlp/CAPI.h
include/dlp/Types.hpp
include/dlp/Internal/Macro.hpp
include/dlp/Internal/Utils.hpp
include/dlp/Parser/Parser_LRC.hpp
include/dlp/Parser/Parser_ASS.hpp
include/dlp/Parser/Parser_SRT.hpp
include/dlp/Parser/Parser_ESLyric.hpp
)
set(DLP_SOURCES
src/Types.cpp
src/File.cpp
src/Process.cpp
src/CAPI.cpp
src/Internal/Utils.cpp
src/Parser/Parser_LRC.cpp
src/Parser/Parser_SRT.cpp
src/Parser/Parser_ESLyric.cpp
src/Parser/Parser_ASS.cpp
src/Parser.cpp
)
# ====================================================
# Targets
# ====================================================
option(BUILD_SHARED_LIBS "Built as a shared library" OFF)
if (BUILD_SHARED_LIBS)
add_library(libdlp SHARED ${DLP_HEADERS} ${DLP_SOURCES})
add_library(libdlp::dynamic ALIAS libdlp)
set_target_properties(libdlp
PROPERTIES
OUTFILE_NAME
libdlp_static)
else ()
add_library(libdlp STATIC ${DLP_HEADERS} ${DLP_SOURCES})
add_library(libdlp::static ALIAS libdlp)
set_target_properties(libdlp
PROPERTIES
OUTFILE_NAME
libdlp_dynamic)
endif ()
# ====================================================
# Include Settings
# ====================================================
target_include_directories(libdlp
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
target_compile_definitions(libdlp
PUBLIC
$<$<BOOL:${BUILD_SHARED_LIBS}>:LIBDLP_SHARED;LIBDLP_BUILD_SHARED>
PRIVATE
$<$<BOOL:${BUILD_SHARED_LIBS}>:LIBDLP_BUILDING>
)
target_link_libraries(libdlp PRIVATE foonathan::lexy foonathan::lexy::dev foonathan::lexy::ext foonathan::_lexy_base)
target_link_libraries(libdlp PRIVATE pugixml::shared pugixml::pugixml)
target_link_libraries(libdlp PRIVATE yyjson::yyjson)
# ====================================================
# Examples
# ====================================================
option(BUILD_EXAMPLES "Build Examples" ON)
if (BUILD_EXAMPLES)
add_executable(libdlpExample_Test examples/DreamLyricParserLib_Test.cpp)
if (BUILD_SHARED_LIBS)
target_link_libraries(libdlpExample_Test PRIVATE libdlp::dynamic)
else ()
target_link_libraries(libdlpExample_Test PRIVATE libdlp::static)
endif ()
target_compile_features(libdlpExample_Test PRIVATE cxx_std_20)
add_executable(libdlpExample_CLI examples/DreamLyricParserLib_CLI.cpp)
if (BUILD_SHARED_LIBS)
target_link_libraries(libdlpExample_CLI PRIVATE libdlp::dynamic)
else ()
target_link_libraries(libdlpExample_CLI PRIVATE libdlp::static)
endif ()
target_compile_features(libdlpExample_CLI PRIVATE cxx_std_20)
endif ()