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
|
--- a/pm_common/CMakeLists.txt
+++ b/pm_common/CMakeLists.txt
@@ -37,6 +37,7 @@
${PMDIR}/pm_common/pmutil.c
${PMDIR}/porttime/porttime.c)
add_library(portmidi ${PM_LIB_PUBLIC_SRC})
+add_library(portmidiStatic STATIC ${PM_LIB_PUBLIC_SRC})
# MSVCRT_DLL is "DLL" for shared runtime library, and "" for static:
set_target_properties(portmidi PROPERTIES
@@ -50,6 +51,12 @@
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+set_target_properties(portmidiStatic PROPERTIES
+ OUTPUT_NAME "${PM_STATIC_LIB_NAME}")
+target_include_directories(portmidiStatic PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+
option(PM_CHECK_ERRORS
"Insert a check for error return values at the end of each PortMidi function.
@@ -107,6 +114,7 @@
target_link_libraries(portmidi PRIVATE be midi midi2)
elseif(UNIX)
target_compile_definitions(portmidi PRIVATE ${LINUX_FLAGS})
+ target_compile_definitions(portmidiStatic PRIVATE ${LINUX_FLAGS})
set(PM_LIB_PRIVATE_SRC
${PMDIR}/porttime/ptlinux.c
${PMDIR}/pm_linux/pmlinux.c
@@ -120,12 +128,14 @@
list(APPEND PM_LIB_PRIVATE_SRC ${PMDIR}/pm_linux/pmlinuxalsa.c)
set(PM_NEEDED_LIBS ${CMAKE_THREAD_LIBS_INIT} ${ALSA_LIBRARIES} PARENT_SCOPE)
target_link_libraries(portmidi PRIVATE Threads::Threads ALSA::ALSA)
+ target_link_libraries(portmidiStatic PRIVATE Threads::Threads ALSA::ALSA)
set(PKGCONFIG_REQUIRES_PRIVATE "alsa" PARENT_SCOPE)
else()
message(WARNING "No PMALSA, so PortMidi will not use ALSA, "
"and will not find or open MIDI devices.")
set(PM_NEEDED_LIBS ${CMAKE_THREAD_LIBS_INIT} PARENT_SCOPE)
target_link_libraries(portmidi PRIVATE Threads::Threads)
+ target_link_libraries(portmidiStatic PRIVATE Threads::Threads)
endif()
elseif(WIN32)
set(PM_LIB_PRIVATE_SRC
@@ -147,4 +157,5 @@
set(PM_LIB_PRIVATE_SRC ${PM_LIB_PRIVATE_SRC} PARENT_SCOPE) # export to parent
target_sources(portmidi PRIVATE ${PM_LIB_PRIVATE_SRC})
+target_sources(portmidiStatic PRIVATE ${PM_LIB_PRIVATE_SRC})
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -119,7 +119,7 @@
endif(BUILD_JAVA_NATIVE_INTERFACE)
# Install the libraries and headers (Linux and Mac OS X command line)
-INSTALL(TARGETS portmidi ${PMJNI_IF_EXISTS}
+INSTALL(TARGETS portmidi portmidiStatic ${PMJNI_IF_EXISTS}
EXPORT PortMidiTargets
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|