Files
sonobulus/CMakeLists.txt
2026-06-06 23:57:19 -05:00

104 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 4.0)
project(sonobulus LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# get dependencies
include(FetchContent)
set(RTAUDIO_BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(RTMIDI_BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(RTAUDIO_TARGETNAME_UNINSTALL rtaudio-uninstall CACHE STRING "" FORCE)
set(RTMIDI_TARGETNAME_UNINSTALL rtmidi-uninstall CACHE STRING "" FORCE)
FetchContent_Declare(
rtaudio
GIT_REPOSITORY https://github.com/thestk/rtaudio.git
GIT_TAG 6.0.1
)
FetchContent_Declare(
rtmidi
GIT_REPOSITORY https://github.com/thestk/rtmidi.git
GIT_TAG 6.0.0
)
# FetchContent_Declare(
# libconfig
# GIT_REPOSITORY https://github.com/hyperrealm/libconfig.git
# GIT_TAG v1.8.2
# )
FetchContent_MakeAvailable(rtaudio)
FetchContent_MakeAvailable(rtmidi)
# FetchContent_MakeAvailable(libconfig)
# needs to be preinstalled
find_package(Qt6 REQUIRED COMPONENTS
Core
Quick
)
qt_standard_project_setup()
add_library(sonobulus_core STATIC
src/ConfigService.cpp
src/LoggerService.cpp
src/TimerComponent.cpp
src/synth/AudioEngine.cpp
src/synth/KeyboardController.cpp
src/synth/MidiController.cpp
src/synth/NoteQueue.cpp
)
target_link_libraries(sonobulus_core PRIVATE
Qt6::Core
Qt6::Quick
rtaudio
rtmidi
)
target_include_directories(sonobulus_core PRIVATE
${CMAKE_SOURCE_DIR}/src/
${rtaudio_SOURCE_DIR}
${rtmidi_SOURCE_DIR}
)
qt_add_executable(sonobulus
src/main.cpp
)
qt_add_qml_module(sonobulus
URI sonobulus
VERSION 1.0
QML_FILES ui/Main.qml
)
target_include_directories(sonobulus PRIVATE
${rtaudio_SOURCE_DIR}
${rtmidi_SOURCE_DIR}
)
target_link_libraries(sonobulus PRIVATE
sonobulus_core
Qt6::Core
Qt6::Quick
)
install(TARGETS sonobulus)
if (WIN32)
add_custom_command(
TARGET sonobulus POST_BUILD
COMMAND powershell -c "${Qt6_DIR}/../../../bin/windeployqt6.exe --qmldir . $<TARGET_FILE:sonobulus>"
COMMENT "windeployqt..."
VERBATIM
)
add_custom_command(
TARGET sonobulus POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_FILE:rtaudio>
$<TARGET_FILE_DIR:sonobulus>
)
endif()
# add_subdirectory(src)
# add_subdirectory(ui)