1 Star 0 Fork 2

ythyty/SonoBus

forked from Gitee 极速下载/SonoBus 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 19.62 KB
一键复制 编辑 原始数据 按行查看 历史
essej 提交于 2022-03-30 10:29 . updated version number
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605
# To get started on a new plugin, copy this entire folder (containing this file and C++ sources) to
# a convenient location, and then start making modifications.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.15)
if (WIN32)
#set (CMAKE_GENERATOR_TOOLSET ClangCL)
#static linking in Windows
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
# If we are compiling for Mac OS we want to target OS versions down to 10.9
option(UniversalBinary "Build universal binary for mac" ON)
if (APPLE)
set (CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE INTERNAL "")
if (UniversalBinary)
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE INTERNAL "")
#set(CMAKE_OSX_ARCHITECTURES arm64 x86_64)
endif()
endif()
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(SonoBus VERSION 1.5.1)
set(BUILDVERSION 74)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# By default we don't want Xcode schemes to be made for modules, etc
set(CMAKE_XCODE_GENERATE_SCHEME OFF)
# No ZERO_CHECK target (it helps bust cache for cmake)
set(CMAKE_SUPPRESS_REGENERATION true)
# prevent install all
#set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true)
# Adds all the module sources so they appear correctly in the IDE
# Must be set before JUCE is added as a sub-dir (or any targets are made)
# https://github.com/juce-framework/JUCE/commit/6b1b4cf7f6b1008db44411f2c8887d71a3348889
set_property(GLOBAL PROPERTY USE_FOLDERS YES)
# This is a failed attempt to bury ALL_BUILD in Targets/
# This should be called before any target is made
# Bug in Xcode? https://gitlab.kitware.com/cmake/cmake/-/issues/21383
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "Targets")
# Create a /Modules directory in the IDE with the JUCE Module code
option(JUCE_ENABLE_MODULE_SOURCE_GROUPS "Show all module sources in IDE projects" ON)
# include JUCE
add_subdirectory(deps/juce EXCLUDE_FROM_ALL )
juce_add_modules(deps/ff_meters)
set (FormatsToBuild VST3 Standalone)
# On Mac, a AU version will be built too
if (APPLE)
list (APPEND FormatsToBuild AU)
endif()
# If you are building a VST2 or AAX plugin, CMake needs to be told where to find these SDKs on your
# system. This setup should be done before calling `juce_add_plugin`.
#juce_set_vst2_sdk_path("../VST2_SDK")
#juce_set_aax_sdk_path("../AAX_SDK_2p3p2")
if (AAX_SDK_PATH)
juce_set_aax_sdk_path (${AAX_SDK_PATH})
if (APPLE OR (NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")))
list (APPEND FormatsToBuild AAX)
endif()
endif()
if (VST2_SDK_PATH)
juce_set_vst2_sdk_path (${VST2_SDK_PATH})
list (APPEND FormatsToBuild VST)
endif()
set (MacPList "<plist version=\"1.0\">
<dict>
<key>CFBundleVersion</key>
<string>${BUILDVERSION}</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>net.sonobus</string>
<key>CFBundleURLSchemes</key>
<array>
<string>sonobus</string>
</array>
</dict>
</array>
</dict>
</plist>")
# `juce_add_plugin` adds a static library target with the name passed as the first argument
# (AudioPluginExample here). This target is a normal CMake target, but has a lot of extra properties set
# up by default. As well as this shared code static library, this function adds targets for each of
# the formats specified by the FORMATS arguments. This function accepts many optional arguments.
# Check the readme at `docs/CMake API.md` in the JUCE repo for the full list.
function(sono_add_custom_plugin_target target_name product_name formats is_instrument plugincode)
if (is_instrument)
set (vst3cats Instrument Network)
set (vst2cat "kPlugCategSynth")
else()
set (vst3cats Fx Network)
set (vst2cat "kPlugCategEffect")
endif()
juce_add_plugin("${target_name}"
IS_SYNTH "${is_instrument}"
NEEDS_MIDI_INPUT TRUE
NEEDS_MIDI_OUTPUT TRUE
EDITOR_WANTS_KEYBOARD_FOCUS TRUE
COMPANY_NAME "Sonosaurus"
BUNDLE_ID "com.Sonosaurus.SonoBus"
MICROPHONE_PERMISSION_ENABLED TRUE
ICON_BIG "images/sonobus_icon_mac_1024.png"
ICON_SMALL "images/sonobus_icon_mac_256.png"
NEEDS_WEB_BROWSER FALSE
VST2_CATEGORY "${vst2cat}"
VST3_CATEGORIES "${vst3cats}"
AAX_CATEGORY "AAX_ePlugInCategory_None"
# mac settings
HARDENED_RUNTIME_ENABLED TRUE
HARDENED_RUNTIME_OPTIONS "com.apple.security.device.audio-input"
PLIST_TO_MERGE "${MacPList}"
AU_MAIN_TYPE "kAudioUnitType_MusicEffect"
# other settings...
PLUGIN_MANUFACTURER_CODE Sono
PLUGIN_CODE ${plugincode}
FORMATS ${formats}
DESCRIPTION "SonoBus - Network Audio"
PRODUCT_NAME "${product_name}")
juce_generate_juce_header("${target_name}")
set (HEADER_INCLUDES
deps/aoo/lib
deps/aoo/deps
)
set (LIB_PATHS "")
set (PLAT_COMPILE_DEFS
$<$<CONFIG:Debug>:LOGLEVEL=2>
USE_CODEC_OPUS=1
AOO_TIMEFILTER_CHECK=0
AOO_STATIC)
set(PlatSourceFiles
Source/CrossPlatformUtils.h
)
# platform specific stuff
if (APPLE)
list (APPEND HEADER_INCLUDES deps/mac/include)
list (APPEND LIB_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/deps/mac/lib)
list (APPEND PlatSourceFiles Source/CrossPlatformUtilsMac.mm)
elseif (WIN32)
list (APPEND HEADER_INCLUDES deps/windows ../asiosdk/common)
list (APPEND PlatSourceFiles Source/CrossPlatformUtilsWindows.cpp)
message (STATUS "Win generator platform is: ${CMAKE_VS_PLATFORM_NAME}" )
if ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
list (APPEND LIB_PATHS
$<$<CONFIG:Debug>:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Debug32>
$<$<CONFIG:Release>:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Release32>
)
else()
list (APPEND LIB_PATHS
$<$<CONFIG:Debug>:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Debug>
$<$<CONFIG:Release>:${CMAKE_CURRENT_SOURCE_DIR}/deps/windows/Release>
)
endif()
list (APPEND PLAT_COMPILE_DEFS
_USE_MATH_DEFINES
WINVER=0x0601
_WIN32_WINNT=0x0601)
else()
# Linux
list (APPEND PlatSourceFiles Source/CrossPlatformUtilsLinux.cpp)
list ( APPEND PLAT_COMPILE_DEFS
JUCE_USE_MP3AUDIOFORMAT=1 )
endif()
set(SourceFiles
${PlatSourceFiles}
Source/AutoUpdater.cpp
Source/AutoUpdater.h
Source/BeatToggleGrid.cpp
Source/BeatToggleGrid.h
Source/ChannelGroup.cpp
Source/ChannelGroup.h
Source/ChannelGroupsView.cpp
Source/ChannelGroupsView.h
Source/ChatView.cpp
Source/ChatView.h
Source/CompressorView.h
Source/ConnectView.cpp
Source/ConnectView.h
Source/DebugLogC.h
Source/EffectParams.cpp
Source/EffectParams.h
Source/EffectsBaseView.h
Source/ExpanderView.h
Source/GenericItemChooser.cpp
Source/GenericItemChooser.h
Source/JitterBufferMeter.cpp
Source/JitterBufferMeter.h
Source/LatencyMatchView.cpp
Source/LatencyMatchView.h
Source/LatencyMeasurer.cpp
Source/LatencyMeasurer.h
Source/LevelMeterLookAndFeelMethods.h
Source/LocalLatencyMeasurer.h
Source/MVerb.h
Source/Metronome.cpp
Source/Metronome.h
Source/MonitorDelayView.h
Source/OptionsView.cpp
Source/OptionsView.h
Source/ParametricEqView.h
Source/PeersContainerView.cpp
Source/PeersContainerView.h
Source/PolarityInvertView.h
Source/RandomSentenceGenerator.cpp
Source/RandomSentenceGenerator.h
Source/ReverbSendView.h
Source/ReverbView.h
Source/RunCumulantor.cpp
Source/RunCumulantor.h
Source/RunningCumulant.h
Source/SampleEditView.cpp
Source/SampleEditView.h
Source/SonoChoiceButton.cpp
Source/SonoChoiceButton.h
Source/SonoDrawableButton.cpp
Source/SonoDrawableButton.h
Source/SonoLookAndFeel.cpp
Source/SonoLookAndFeel.h
Source/SonoMultiStateDrawableButton.cpp
Source/SonoMultiStateDrawableButton.h
Source/SonoPlaybackProgressButton.cpp
Source/SonoPlaybackProgressButton.h
Source/SonoStandaloneFilterApp.cpp
Source/SonoStandaloneFilterWindow.h
Source/SonoTextButton.cpp
Source/SonoTextButton.h
Source/SonoUtility.h
Source/Soundboard.cpp
Source/Soundboard.h
Source/SoundboardButtonColors.h
Source/SoundboardChannelProcessor.cpp
Source/SoundboardChannelProcessor.h
Source/SoundboardEditView.cpp
Source/SoundboardEditView.h
Source/SoundboardProcessor.cpp
Source/SoundboardProcessor.h
Source/SoundboardView.cpp
Source/SoundboardView.h
Source/SoundSampleButtonColourPicker.cpp
Source/SoundSampleButtonColourPicker.h
Source/SonobusPluginEditor.cpp
Source/SonobusPluginEditor.h
Source/SonobusPluginProcessor.cpp
Source/SonobusPluginProcessor.h
Source/SonobusTypes.h
Source/VersionInfo.cpp
Source/VersionInfo.h
Source/WaveformTransportComponent.h
Source/faustCompressor.h
Source/faustExpander.h
Source/faustLimiter.h
Source/faustParametricEQ.h
Source/mtdm.h
Source/zitaRev.h
)
set(AOOSourceFiles
deps/aoo/lib/src/SLIP.hpp
deps/aoo/lib/src/client.cpp
deps/aoo/lib/src/client.hpp
deps/aoo/lib/src/codec_opus.cpp
deps/aoo/lib/src/codec_pcm.cpp
deps/aoo/lib/src/common.cpp
deps/aoo/lib/src/common.hpp
deps/aoo/lib/src/lockfree.hpp
deps/aoo/lib/src/net_utils.cpp
deps/aoo/lib/src/net_utils.hpp
deps/aoo/lib/src/server.cpp
deps/aoo/lib/src/server.hpp
deps/aoo/lib/src/sink.cpp
deps/aoo/lib/src/sink.hpp
deps/aoo/lib/src/source.cpp
deps/aoo/lib/src/source.hpp
deps/aoo/lib/src/sync.cpp
deps/aoo/lib/src/sync.hpp
deps/aoo/lib/src/time.cpp
deps/aoo/lib/src/time.hpp
deps/aoo/lib/src/time_dll.hpp
deps/aoo/lib/aoo/aoo.h
deps/aoo/lib/aoo/aoo.hpp
deps/aoo/lib/aoo/aoo_net.h
deps/aoo/lib/aoo/aoo_net.hpp
deps/aoo/lib/aoo/aoo_opus.h
deps/aoo/lib/aoo/aoo_pcm.h
deps/aoo/lib/aoo/aoo_types.h
deps/aoo/lib/aoo/aoo_utils.hpp
deps/aoo/deps/md5/md5.c
deps/aoo/deps/md5/md5.h
deps/aoo/deps/oscpack/osc/OscOutboundPacketStream.cpp
deps/aoo/deps/oscpack/osc/OscPrintReceivedElements.cpp
deps/aoo/deps/oscpack/osc/OscReceivedElements.cpp
deps/aoo/deps/oscpack/osc/OscTypes.cpp
deps/aoo/deps/oscpack/osc/MessageMappingOscPacketListener.h
deps/aoo/deps/oscpack/osc/OscException.h
deps/aoo/deps/oscpack/osc/OscHostEndianness.h
deps/aoo/deps/oscpack/osc/OscOutboundPacketStream.h
deps/aoo/deps/oscpack/osc/OscPacketListener.h
deps/aoo/deps/oscpack/osc/OscPrintReceivedElements.h
deps/aoo/deps/oscpack/osc/OscReceivedElements.h
deps/aoo/deps/oscpack/osc/OscTypes.h
)
target_sources("${target_name}" PRIVATE
${SourceFiles}
${AOOSourceFiles}
)
# No, we don't want our source buried in extra nested folders
set_target_properties("${target_name}" PROPERTIES FOLDER "")
# The source tree should uhhh, still look like the source tree, yo
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/Source PREFIX "" FILES ${SourceFiles})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/deps/aoo PREFIX "aoo" FILES ${AOOSourceFiles})
# Move the INTERFACE auto-created JUCE library stuff into its own folder
source_group("JUCE Library Code" REGULAR_EXPRESSION "juce_")
#target_include_directories("${target_name}"
# INTERFACE
# $<TARGET_PROPERTY:"${target_name}",INCLUDE_DIRECTORIES>)
target_include_directories("${target_name}"
PUBLIC
${HEADER_INCLUDES}
)
# Require at least C++17 to build `my_target`
target_compile_features("${target_name}" PRIVATE cxx_std_17)
# This cleans up the folder organization, especially on Xcode.
# It tucks the Plugin varieties into a "Targets" folder and generate an Xcode Scheme manually
# Xcode scheme generation is turned off globally to limit noise from other targets
# The non-hacky way of doing this is via the global PREDEFINED_TARGETS_FOLDER propety
# However that doesn't seem to be working in Xcode
# Not all plugin types (au, vst) available on each build type (win, macos, linux)
foreach(target ${formats} "All")
if(TARGET ${target_name}_${target})
set_target_properties(${target_name}_${target} PROPERTIES
# Tuck the actual plugin targets into a folder where they won't bother us
FOLDER "Targets"
# MacOS only: Sets the default executable that Xcode will open on build
# For this exact path to to work, manually build the AudioPluginHost.xcodeproj in the JUCE subdir
# XCODE_SCHEME_EXECUTABLE "${CMAKE_CURRENT_SOURCE_DIR}/deps/juce/extras/AudioPluginHost/Builds/MacOSX/build/Debug/AudioPluginHost.app"
# Let us build the target in Xcode
XCODE_GENERATE_SCHEME ON)
endif()
endforeach()
target_compile_definitions("${target_name}"
PUBLIC
JUCE_WEB_BROWSER=0
JUCE_USE_CURL=0
JUCE_VST3_CAN_REPLACE_VST2=0
JUCE_DISPLAY_SPLASH_SCREEN=0
JUCE_USE_CUSTOM_PLUGIN_STANDALONE_APP=1
JUCE_USE_WINDOWS_MEDIA_FORMAT=1
JUCE_LOAD_CURL_SYMBOLS_LAZILY=1
JUCE_ASIO=1
JUCE_WASAPI=1
JUCE_DIRECTSOUND=0
JUCE_JACK=1
JUCE_ALSA=1
JUCE_USE_ANDROID_OBOE=1
JUCE_USE_OBOE_STABILIZED_CALLBACK=1
JUCE_LOAD_CURL_SYMBOLS_LAZILY=1
FF_AUDIO_ALLOW_ALLOCATIONS_IN_MEASURE_BLOCK=0
SONOBUS_BUILD_VERSION="${VERSION}"
${PLAT_COMPILE_DEFS} )
juce_add_binary_data("${target_name}_SBData" SOURCES
Source/wordmaker.g
Source/DejaVuSans.ttf
localization/localized_de.txt
localization/localized_es.txt
localization/localized_fr.txt
localization/localized_it.txt
localization/localized_ja.txt
localization/localized_nl.txt
localization/localized_pt-br.txt
localization/localized_pt-pt.txt
localization/localized_ko.txt
localization/localized_ru.txt
images/bar_click.wav
images/beat_click.wav
images/chat.svg
images/chat_dots.svg
images/checkmark.svg
images/chevron_forward.svg
images/continue.svg
images/copy_icon.svg
images/dice_icon_128.png
images/dispfull.svg
images/dispminimal.svg
images/dots.svg
images/dots_icon.png
images/dots_menu.png
images/expand_arrow_active.svg
images/expand_arrow_inactive.svg
images/eyedropper.svg
images/folder_icon.svg
images/hear-others.svg
images/hold.svg
images/incoming_allowed.svg
images/incoming_allowed_active.svg
images/incoming_disallowed.svg
images/keyboard.svg
images/keyboard_disabled.svg
images/lgc_bar.wav
images/link.svg
images/link_all.svg
images/link_up.svg
images/list_icon1.png
images/loop_icon.svg
images/loop_off_icon.png
images/met.svg
images/mic.svg
images/mic_disabled.svg
images/mic_pointing.svg
images/move_updown.svg
images/mute-others.svg
images/network.svg
images/oneshot.svg
images/outgoing_allowed.svg
images/outgoing_allowed_active.svg
images/outgoing_disallowed.svg
images/paste_icon.svg
images/pause_icon.svg
images/people.png
images/people.svg
images/person.png
images/person.svg
images/play_back_to_back.svg
images/play_icon.svg
images/play_simultaneous.svg
images/play_background.svg
images/plus_icon.svg
images/power.svg
images/power_sel.svg
images/record.svg
images/record_active.svg
images/record_active_alt.svg
images/rectape.svg
images/reset_buffer_icon.svg
images/send_group.svg
images/send_group_small.svg
images/replay_icon.svg
images/settings_icon.svg
images/skipback_icon.svg
images/sonobus_logo_96.png
images/sonobus_title_small.png
images/soundboard.svg
images/speaker.svg
images/speaker_disabled.svg
images/speaker_disabled_grey.svg
images/toggle.svg
images/triangle_disclosure.svg
images/triangle_disclosure_right.svg
images/urei_main.wav
images/x_icon.svg
)
set_target_properties(${target_name}_SBData PROPERTIES FOLDER "Targets")
if (UNIX AND NOT APPLE)
target_compile_options("${target_name}_SBData"
PRIVATE
-fPIC
)
find_library(OPUS_LIB opus)
if (NOT OPUS_LIB)
message(FATAL_ERROR "opus library not found, please install libopus develop package")
endif()
if (JUCE_LINUX_TARGET_ARCHITECTURE MATCHES "arm" )
message(STATUS "ARM platform, adding -march=native")
target_compile_options(${target_name} PUBLIC
-march=native
)
endif()
if (TARGET ${target_name}_Standalone)
# make linux executable all lower case
string(TOLOWER ${target_name} tmptargname)
set_target_properties("${target_name}_Standalone"
PROPERTIES
OUTPUT_NAME ${tmptargname}
)
endif()
endif()
target_link_directories("${target_name}" INTERFACE
${LIB_PATHS}
)
target_link_libraries("${target_name}"
PRIVATE
juce::juce_audio_utils
juce::juce_dsp
juce::juce_audio_plugin_client
ff_meters
${target_name}_SBData
opus
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
# juce::juce_recommended_warning_flags
)
endfunction()
# most of the targets
sono_add_custom_plugin_target(SonoBus SonoBus "${FormatsToBuild}" FALSE "NBus")
# Mobile targets
#sono_add_custom_plugin_target(SonoBusMobile "AUv3 Standalone" FALSE "NBus")
# add VSTi target
sono_add_custom_plugin_target(SonoBusInst "SonoBusInstrument" "VST3" TRUE "IBus")
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/ythyty/SonoBus.git
git@gitee.com:ythyty/SonoBus.git
ythyty
SonoBus
SonoBus
main

搜索帮助