CMakeLists.txt (2773B)
1 cmake_minimum_required(VERSION 3.15) 2 project(jucePluginLib VERSION ${CMAKE_PROJECT_VERSION}) 3 4 configure_file(${CMAKE_CURRENT_LIST_DIR}/version.h.in ${CMAKE_CURRENT_LIST_DIR}/version.h) 5 6 file(TOUCH_NOCREATE ${CMAKE_CURRENT_LIST_DIR}/version.h.in) 7 file(TOUCH_NOCREATE ${CMAKE_CURRENT_LIST_DIR}/versionDateTime.h.in) 8 9 set(SOURCES 10 bypassBuffer.cpp bypassBuffer.h 11 createVersionDateTime.cmake 12 clipboard.cpp clipboard.h 13 controller.cpp controller.h 14 controllermap.cpp controllermap.h 15 dummydevice.cpp dummydevice.h 16 filetype.cpp filetype.h 17 midipacket.cpp midipacket.h 18 midiports.cpp midiports.h 19 parameter.cpp parameter.h 20 parameterbinding.cpp parameterbinding.h 21 parameterdescription.cpp parameterdescription.h 22 parameterdescriptions.cpp parameterdescriptions.h 23 parameterlink.cpp parameterlink.h 24 parameterlinks.cpp parameterlinks.h 25 parameterlistener.cpp parameterlistener.h 26 parameterlocking.cpp parameterlocking.h 27 parameterregion.cpp parameterregion.h 28 parametervaluelist.cpp parametervaluelist.h 29 pluginVersion.cpp pluginVersion.h 30 processor.cpp processor.h 31 processorPropertiesInit.h 32 softknob.cpp softknob.h 33 tools.cpp tools.h 34 types.h 35 version.h.in version.h 36 versionDateTime.h.in versionDateTime.h 37 ) 38 39 set(SOURCES_PATCHDB 40 patchdb/datasource.cpp patchdb/datasource.h 41 patchdb/db.cpp patchdb/db.h 42 patchdb/jobqueue.cpp patchdb/jobqueue.h 43 patchdb/patch.cpp patchdb/patch.h 44 patchdb/patchdbtypes.cpp patchdb/patchdbtypes.h 45 patchdb/patchhistory.cpp patchdb/patchhistory.h 46 patchdb/patchmodifications.cpp patchdb/patchmodifications.h 47 patchdb/search.cpp patchdb/search.h 48 patchdb/serialization.cpp patchdb/serialization.h 49 patchdb/tags.cpp patchdb/tags.h 50 ) 51 52 add_library(jucePluginLib STATIC) 53 54 target_sources(jucePluginLib PRIVATE ${SOURCES} ${SOURCES_PATCHDB}) 55 source_group("source" FILES ${SOURCES}) 56 source_group("source\\patchdb" FILES ${SOURCES_PATCHDB}) 57 58 target_link_libraries(jucePluginLib PUBLIC juceUiLib synthLib bridgeClient) 59 target_include_directories(jucePluginLib PUBLIC ../JUCE/modules) 60 target_compile_definitions(jucePluginLib PRIVATE JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1) 61 set_property(TARGET jucePluginLib PROPERTY FOLDER "Gearmulator") 62 63 add_custom_command( 64 PRE_BUILD 65 OUTPUT ${CMAKE_CURRENT_LIST_DIR}/_doesnotexist_versionDateTime.h # fake, causes regeneration for every build, exactly what we want 66 OUTPUT ${CMAKE_CURRENT_LIST_DIR}/versionDateTime.h # valid 67 DEPENDS ${CMAKE_CURRENT_LIST_DIR}/versionDateTime.h.in 68 COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_LIST_DIR}/createVersionDateTime.cmake" 69 ) 70 71 target_include_directories(jucePluginLib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..) 72 73 if(UNIX AND NOT APPLE) 74 set(THREADS_PREFER_PTHREAD_FLAG TRUE) 75 find_package(Threads REQUIRED) 76 target_link_libraries(jucePluginLib PRIVATE Threads::Threads) 77 endif()