-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
100 lines (83 loc) · 2.95 KB
/
CMakeLists.txt
File metadata and controls
100 lines (83 loc) · 2.95 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
cmake_minimum_required(VERSION 3.22)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment target")
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
project(Sampler VERSION 1.0.0)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set_property(GLOBAL PROPERTY USE_FOLDERS YES)
option(JUCE_ENABLE_MODULE_SOURCE_GROUPS "Enable Module Source Groups" ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 20)
# generate PDB/dSYM files for the Release build
if(MSVC)
add_compile_options("$<$<NOT:$<CONFIG:Debug>>:/Zi>")
add_link_options("$<$<NOT:$<CONFIG:Debug>>:/DEBUG>")
add_link_options("$<$<NOT:$<CONFIG:Debug>>:/OPT:REF>")
add_link_options("$<$<NOT:$<CONFIG:Debug>>:/OPT:ICF>")
else()
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -g")
set(CMAKE_XCODE_ATTRIBUTE_GCC_GENERATE_DEBUGGING_SYMBOLS[variant=Release] "YES")
set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT[variant=Release] "dwarf-with-dsym")
set(CMAKE_XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING[variant=Release] "YES")
endif()
# We're going to use CPM as our package manager to bring in JUCE
# Check to see if we have CPM installed already. Bring it in if we don't.
set(CPM_DOWNLOAD_VERSION 0.34.0)
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
if (NOT EXISTS ${CPM_DOWNLOAD_LOCATION})
message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}")
file(DOWNLOAD https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake ${CPM_DOWNLOAD_LOCATION})
endif ()
include(${CPM_DOWNLOAD_LOCATION})
CPMAddPackage(NAME JUCE
GITHUB_REPOSITORY juce-framework/JUCE
GIT_TAG 8.0.8
)
juce_add_plugin(${PROJECT_NAME}
COMPANY_NAME "The Audio Programmer"
PLUGIN_MANUFACTURER_CODE Tap1
PLUGIN_CODE Smpl
BUNDLE_ID "org.theaudioprogrammer.sampler"
IS_SYNTH TRUE
NEEDS_MIDI_INPUT TRUE
NEEDS_MIDI_OUTPUT FALSE
IS_MIDI_EFFECT FALSE
EDITOR_WANTS_KEYBOARD_FOCUS FALSE
COPY_PLUGIN_AFTER_BUILD TRUE
FORMATS AU VST3 Standalone
PRODUCT_NAME "Sampler"
)
target_sources(${PROJECT_NAME} PRIVATE
sources/PluginEditor.cpp
sources/PluginEditor.h
sources/PluginProcessor.cpp
sources/PluginProcessor.h
)
juce_generate_juce_header(${PROJECT_NAME})
juce_add_binary_data(BinaryData SOURCES
sounds/c5.wav
sounds/d5.wav
sounds/e5.wav
sounds/f5.wav
sounds/g5.wav
sounds/a5.wav
sounds/b5.wav
sounds/c6.wav
)
target_compile_definitions(${PROJECT_NAME} PUBLIC
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_VST3_CAN_REPLACE_VST2=0
JUCE_REPORT_APP_USAGE=0
JUCE_MODAL_LOOPS_PERMITTED=0
DONT_SET_USING_JUCE_NAMESPACE=1
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
juce::juce_animation
juce::juce_audio_utils
juce::juce_dsp
PUBLIC
juce_recommended_warning_flags
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
)