-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
172 lines (150 loc) · 4.33 KB
/
Copy pathCMakeLists.txt
File metadata and controls
172 lines (150 loc) · 4.33 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
cmake_minimum_required(VERSION 3.10)
project("GridSeq" VERSION 1.0.0)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
#set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment target")
set(CMAKE_CXX_STANDARD 17)
#this is where JUCE will install, I think
set(LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs)
# Downloads CPM if not already downloaded. CPM is an easy-to-use package manager nicely integrated with CMake.
include(cmake/cpm.cmake)
# This commands downloads AND configures JUCE. It sets up some variables, like JUCE_SOURCE_DIR.
CPMAddPackage(
NAME JUCE
GIT_TAG 8.0.6
VERSION 8.0.6
GITHUB_REPOSITORY juce-framework/JUCE
SOURCE_DIR ${LIB_DIR}/juce
)
juce_add_plugin(GridSeq
# VERSION 0.0.1
# ICON_BIG ...
# ICON_* arguments specify a path to an image file to use as an icon for the Standalone
# ICON_SMALL ...
COMPANY_NAME "section_fourteen"
IS_SYNTH TRUE
NEEDS_MIDI_INPUT TRUE
NEEDS_MIDI_OUTPUT TRUE
# EDITOR_WANTS_KEYBOARD_FOCUS TRUE/FALSE
COPY_PLUGIN_AFTER_BUILD TRUE
PLUGIN_MANUFACTURER_CODE Manu
PLUGIN_CODE Xg0p
FORMATS VST3
PRODUCT_NAME "GridSeq"
)
# generate Juce.h
juce_generate_juce_header(GridSeq)
set(DEVICE /device)
set(GUI /gui)
set(LABELS /labels)
set(GEN /midi_gen)
set(SEQ /midi_sequencers)
set(MONONOTE /mononote)
set(OBSERVER /observer)
set(TIMING /timing)
set(SEQ /midi_sequencers)
set(TYPES /types)
set(SOURCE ${CMAKE_SOURCE_DIR}/Source)
set(MAIN
${SOURCE}/PluginProcessor.h
${SOURCE}/PluginProcessor.cpp
${SOURCE}/PluginEditor.h
${SOURCE}/PluginEditor.cpp
)
set(DEVICE_SOURECES
${SOURCE}/${DEVICE}/DeviceColors.h
${SOURCE}/${DEVICE}/DeviceColors.cpp
${SOURCE}/${DEVICE}/GridDevice.h
${SOURCE}/${DEVICE}/GridDevice.cpp
)
set(GUI_SOURCES
${SOURCE}/${GUI}/SeqButton.h
${SOURCE}/${GUI}/SeqButton.cpp
${SOURCE}/${GUI}/SeqButtons.h
${SOURCE}/${GUI}/SeqButtons.cpp
)
set(LABEL_SOURCES
${SOURCE}/${LABELS}/DoubleLabel.h
${SOURCE}/${LABELS}/DoubleLabel.cpp
${SOURCE}/${LABELS}/IntLabel.h
${SOURCE}/${LABELS}/IntLabel.cpp
${SOURCE}/${LABELS}/StrLabel.h
${SOURCE}/${LABELS}/StrLabel.cpp
)
set(GEN_SOURCES
${SOURCE}/${GEN}/BaseGen.h
${SOURCE}/${GEN}/BaseGen.cpp
${SOURCE}/${GEN}/MonoGen.h
${SOURCE}/${GEN}/MonoGen.cpp
${SOURCE}/${GEN}/SeqGen.h
)
set(SEQ_SOURCES
${SOURCE}/${SEQ}/${MONONOTE}/Gates.h
${SOURCE}/${SEQ}/${MONONOTE}/Gates.cpp
${SOURCE}/${SEQ}/${MONONOTE}/Velocities.h
${SOURCE}/${SEQ}/${MONONOTE}/Velocities.cpp
${SOURCE}/${SEQ}/${MONONOTE}/MonoNote.h
${SOURCE}/${SEQ}/${MONONOTE}/MonoNote.cpp
${SOURCE}/${SEQ}/BaseSeq.h
${SOURCE}/${SEQ}/BaseSeq.cpp
${SOURCE}/${SEQ}/Colors.h
${SOURCE}/${SEQ}/Manager.h
${SOURCE}/${SEQ}/Manager.cpp
${SOURCE}/${SEQ}/Scales.h
${SOURCE}/${SEQ}/Seq.h
)
set(OBSERVER_SOURCES
${SOURCE}/${OBSERVER}/GenObserver.h
${SOURCE}/${OBSERVER}/GenSubject.h
${SOURCE}/${OBSERVER}/Observer.h
${SOURCE}/${OBSERVER}/Subject.h
)
set(TIMING_SOURCES
${SOURCE}/${TIMING}/Phasor.h
${SOURCE}/${TIMING}/Phasor.cpp
${SOURCE}/${TIMING}/Transport.h
${SOURCE}/${TIMING}/Transport.cpp
)
set(TYPE_SOURCES
#${SOURCE}/${TYPES}/MidiInput.h
#${SOURCE}/${TYPES}/MidiInput.cpp
#${SOURCE}/${TYPES}/MidiOutput.h
#${SOURCE}/${TYPES}/MidiOutput.cpp
${SOURCE}/${TYPES}/Quad.h
${SOURCE}/${TYPES}/Types.h
)
target_sources(GridSeq
PRIVATE
${MAIN}
${DEVICE_SOURECES}
${GUI_SOURCES}
${LABEL_SOURCES}
${GEN_SOURCES}
${SEQ_SOURCES}
${OBSERVER_SOURCES}
${TIMING_SOURCES}
${TYPE_SOURCES}
)
target_compile_definitions(GridSeq
PUBLIC
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_VST3_CAN_REPLACE_VST2=0
)
# JUCE libraries to bring into our project
target_link_libraries(${PROJECT_NAME}
PUBLIC
juce::juce_audio_basics
juce::juce_audio_devices
juce::juce_audio_formats
juce::juce_audio_plugin_client
juce::juce_audio_processors
juce::juce_audio_utils
juce::juce_core
juce::juce_data_structures
juce::juce_events
juce::juce_graphics
juce::juce_gui_basics
juce::juce_gui_extra
juce::juce_osc
)
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)