cmake_minimum_required(VERSION 3.22) project(Monoslicer VERSION 1.0.0 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_subdirectory(lib/JUCE) juce_add_plugin(Monoslicer COMPANY_NAME "Monoslicer" PLUGIN_MANUFACTURER_CODE RcSp PLUGIN_CODE MsP1 FORMATS AU VST3 Standalone PRODUCT_NAME "Monoslicer" IS_SYNTH TRUE NEEDS_MIDI_INPUT TRUE NEEDS_MIDI_OUTPUT FALSE IS_MIDI_EFFECT FALSE EDITOR_WANTS_KEYBOARD_FOCUS TRUE COPY_PLUGIN_AFTER_BUILD TRUE VST3_CATEGORIES Instrument Sampler ) target_sources(Monoslicer PRIVATE Source/PluginProcessor.cpp Source/PluginEditor.cpp Source/SliceManager.cpp Source/WaveformDisplay.cpp Source/PianoRollDisplay.cpp ) execute_process( COMMAND git rev-parse --short HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) if(NOT GIT_COMMIT_HASH) set(GIT_COMMIT_HASH "unknown") endif() execute_process( COMMAND git symbolic-ref --short HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET ) execute_process( COMMAND git diff --quiet HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} RESULT_VARIABLE GIT_DIRTY_RESULT ) execute_process( COMMAND git diff --cached --quiet WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} RESULT_VARIABLE GIT_CACHED_DIRTY_RESULT ) set(GIT_DIRTY "") if(NOT GIT_DIRTY_RESULT EQUAL 0 OR NOT GIT_CACHED_DIRTY_RESULT EQUAL 0) set(GIT_DIRTY "-dirty") endif() if(GIT_BRANCH) set(GIT_VERSION "${GIT_BRANCH} @ ${GIT_COMMIT_HASH}${GIT_DIRTY}") else() set(GIT_VERSION "detached @ ${GIT_COMMIT_HASH}${GIT_DIRTY}") endif() target_compile_definitions(Monoslicer PUBLIC JUCE_WEB_BROWSER=0 JUCE_USE_CURL=0 JUCE_VST3_CAN_REPLACE_VST2=0 GIT_VERSION="${GIT_VERSION}" ) target_link_libraries(Monoslicer PRIVATE juce::juce_audio_utils juce::juce_audio_processors juce::juce_audio_formats juce::juce_dsp PUBLIC juce::juce_recommended_config_flags juce::juce_recommended_lto_flags ) # Suppress JUCE / VST3 SDK warnings globally for all targets. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics -Wno-deprecated-declarations -Wno-implicit-int-conversion-on-negation")