diff --git a/CMakeLists.txt b/CMakeLists.txt
index f031d813..75883321 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -856,6 +856,29 @@ configure_file ( fluidsynth.pc.in
install ( FILES ${CMAKE_BINARY_DIR}/fluidsynth.pc
DESTINATION ${LIB_INSTALL_DIR}/pkgconfig )
+# Exported targets for cmake: find_package(FluidSynth)
+# when installed, use CMAKE_PREFIX_PATH=fluidsynth-prefix;...
+# to use the build directory directly set the FluidSynth_DIR variable instead.
+
+# targets in the build directory
+export(EXPORT FluidSynthTargets
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/FluidSynthTargets.cmake"
+ NAMESPACE FluidSynth::
+)
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ FluidSynthConfigVersion.cmake
+ VERSION ${LIB_VERSION_INFO}
+ COMPATIBILITY SameMajorVersion
+)
+
+configure_file(FluidSynthConfig.cmake.in FluidSynthConfig.cmake @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/FluidSynthConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/FluidSynthConfigVersion.cmake"
+ DESTINATION ${LIB_INSTALL_DIR}/cmake/fluidsynth
+)
+
# Extra targets for Unix build environments
if ( UNIX )
if ( DEFINED FLUID_DAEMON_ENV_FILE)
diff --git a/FluidSynthConfig.cmake.in b/FluidSynthConfig.cmake.in
new file mode 100644
index 00000000..9f85511a
--- /dev/null
+++ b/FluidSynthConfig.cmake.in
@@ -0,0 +1,11 @@
+# for the find_dependency() macro:
+# include(CMakeFindDependencyMacro)
+# it has the same syntax as find_package:
+# find_dependency(MYDEP REQUIRED)
+
+# define variables for configuration options:
+# set(network-enabled @enable-network@)
+
+# finally, include the targets/version files
+include("${CMAKE_CURRENT_LIST_DIR}/FluidSynthTargets.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/FluidSynthConfigVersion.cmake")
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e913cb21..5cc98fbf 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -399,12 +399,14 @@ target_link_libraries ( fluidsynth
if ( MACOSX_FRAMEWORK )
install ( TARGETS fluidsynth libfluidsynth
+ EXPORT FluidSynthTargets
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
FRAMEWORK DESTINATION ${FRAMEWORK_INSTALL_DIR}
ARCHIVE DESTINATION ${FRAMEWORK_INSTALL_DIR}
)
else ( MACOSX_FRAMEWORK )
install ( TARGETS fluidsynth libfluidsynth
+ EXPORT FluidSynthTargets
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
@@ -413,6 +415,22 @@ else ( MACOSX_FRAMEWORK )
install ( FILES ${public_main_HEADER} DESTINATION ${INCLUDE_INSTALL_DIR} )
endif ( MACOSX_FRAMEWORK )
+# Exported targets.
+
+# build_interface: for the libfluidsynth target when imported from the build directory.
+# install_interface: for the target when imported from the installed directory.
+target_include_directories(libfluidsynth PUBLIC
+ "$"
+ "$"
+)
+
+# installation of the exported targets
+install(EXPORT FluidSynthTargets
+ FILE FluidSynthTargets.cmake
+ NAMESPACE FluidSynth::
+ DESTINATION ${LIB_INSTALL_DIR}/cmake/fluidsynth
+)
+
# ******* Auto Generated Lookup Tables ******
include(ExternalProject)