-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
106 lines (83 loc) · 2.93 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
106
cmake_minimum_required(VERSION 3.15.0)
project(libmfmidi VERSION 0.1.0)
option(BUILD_SHARED_LIBS "Build using shared libraries" OFF)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(CTest)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -fdiagnostics-color=always")
endif ()
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif ()
# if(CMAKE_BUILD_TYPE STREQUAL "Debug")
# add_definitions(-D__RTMIDI_DEBUG__)
# if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
# endif()
# if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
# endif()
# endif()
# --- KDMAPI (OmniMIDI)
if (WIN32)
add_library(KDMAPI STATIC include/omnimidi/omnimidiapi.cpp)
target_link_libraries(KDMAPI PUBLIC winmm)
endif ()
set(RTMIDI_BUILD_STATIC_LIBS ON)
include(FetchContent)
FetchContent_Declare(
libremidi
GIT_REPOSITORY https://github.com/celtera/libremidi.git
GIT_TAG v4.5.0
)
FetchContent_MakeAvailable(libremidi)
# --- mfmidi
if (WIN32)
set(mfmidi_win32_sources src/kdmapi_device.cpp include/mfmidi/device/kdmapi_device.hpp)
else ()
set(mfmidi_win32_sources)
endif ()
add_library(mfmidi STATIC
include/mfmidi/midi_device.hpp
include/mfmidi/mfmidi.hpp
include/mfmidi/mfutility.hpp
include/mfmidi/track_player.hpp
include/mfmidi/midi_message.hpp
include/mfmidi/smf/span_track.hpp
include/mfmidi/midi_status.hpp
include/mfmidi/midi_utility.hpp
include/mfmidi/dummy.cpp
include/mfmidi/timingapi.hpp
include/mfmidi/device/libremidi_device.hpp
include/mfmidi/event.hpp
include/mfmidi/smf/smf.hpp
include/mfmidi/smf/variable_number.hpp
include/mfmidi/smf/division.hpp
include/mfmidi/midi_tempo.hpp
include/mfmidi/smf/smf_error.hpp
include/mfmidi/midi_events.hpp
include/mfmidi/smf.hpp
include/mfmidi/devices.hpp
src/platformapi.cpp
src/smf_error.cpp
${mfmidi_win32_sources}
include/mfmidi/midi_ranges.hpp
)
if (WIN32)
# target_precompile_headers(mfmidi PUBLIC <Windows.h>)
# target_precompile_headers(KDMAPI PUBLIC <Windows.h>)
target_link_libraries(mfmidi PRIVATE KDMAPI avrt)
endif ()
target_include_directories(mfmidi PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_compile_definitions(mfmidi PUBLIC $<$<BOOL:${WIN32}>:_WIN32> $<$<BOOL:${UNIX}>:_UNIX>)
target_link_libraries(mfmidi PUBLIC libremidi)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_link_libraries(mfmidi PUBLIC stdc++exp)
endif ()
include(CPack)
if (BUILD_TESTING)
add_subdirectory(test)
endif ()
add_subdirectory(example)
# execute_process(COMMAND "python.exe" "-m" "compdb" "-p" "build" "list" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} ECHO_ERROR_VARIABLE ECHO_OUTPUT_VARIABLE)