45ce59b
--- a/CMakeLists.txt
45ce59b
+++ b/CMakeLists.txt
5be39b2
@@ -274,16 +274,20 @@ set(_INSTALL_DESTINATIONS
45ce59b
 ###
45ce59b
 ### Library
45ce59b
 ###
45ce59b
-add_library(yaml-cpp ${library_sources})
45ce59b
-set_target_properties(yaml-cpp PROPERTIES
45ce59b
-  COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags}"
45ce59b
-)
5be39b2
-
5be39b2
-set_target_properties(yaml-cpp PROPERTIES
45ce59b
+if(BUILD_SHARED_LIBS)
45ce59b
+    add_library(yaml-cpp SHARED ${library_sources})
45ce59b
+    set_target_properties(yaml-cpp PROPERTIES
45ce59b
 	VERSION "${YAML_CPP_VERSION}"
45ce59b
 	SOVERSION "${YAML_CPP_VERSION_MAJOR}.${YAML_CPP_VERSION_MINOR}"
45ce59b
 	PROJECT_LABEL "yaml-cpp ${LABEL_SUFFIX}"
45ce59b
+        COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags}"
5be39b2
 )
5be39b2
+else()
5be39b2
+    add_library(yaml-cpp STATIC ${library_sources})
5be39b2
+    set_target_properties(yaml-cpp PROPERTIES
5be39b2
+        COMPILE_FLAGS "${yaml_c_flags} ${yaml_cxx_flags}"
5be39b2
+    )
45ce59b
+endif()
45ce59b
 
45ce59b
 if(IPHONE)
45ce59b
 	set_target_properties(yaml-cpp PROPERTIES
5be39b2
@@ -303,48 +307,56 @@ if(MSVC)
45ce59b
 	endif()
45ce59b
 endif()
45ce59b
 
45ce59b
-install(TARGETS yaml-cpp EXPORT yaml-cpp-targets ${_INSTALL_DESTINATIONS})
45ce59b
 install(
45ce59b
 	DIRECTORY ${header_directory}
45ce59b
 	DESTINATION ${INCLUDE_INSTALL_DIR}
45ce59b
 	FILES_MATCHING PATTERN "*.h"
45ce59b
 )
45ce59b
 
45ce59b
-export(
45ce59b
-    TARGETS yaml-cpp
45ce59b
-    FILE "${PROJECT_BINARY_DIR}/yaml-cpp-targets.cmake")
45ce59b
-export(PACKAGE yaml-cpp)
45ce59b
-set(EXPORT_TARGETS yaml-cpp CACHE INTERNAL "export targets")
45ce59b
+if(BUILD_SHARED_LIBS)
5be39b2
+    set(YAML_TARGET "yaml-cpp")
5be39b2
+else()
5be39b2
+    set(YAML_TARGET "yaml-cpp-static")
45ce59b
+endif()
5be39b2
 
5be39b2
+install(TARGETS yaml-cpp EXPORT ${YAML_TARGET}-targets ${_INSTALL_DESTINATIONS})
5be39b2
+export(TARGETS yaml-cpp
5be39b2
+    FILE "${PROJECT_BINARY_DIR}/${YAML_TARGET}-targets.cmake")
5be39b2
+set(EXPORT_TARGETS yaml-cpp CACHE INTERNAL "export targets")
5be39b2
 set(CONFIG_INCLUDE_DIRS "${YAML_CPP_SOURCE_DIR}/include")
5be39b2
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in
5be39b2
-	"${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" @ONLY)
5be39b2
+    "${PROJECT_BINARY_DIR}/${YAML_TARGET}-config.cmake" @ONLY)
45ce59b
 
45ce59b
+if(NOT INSTALL_CMAKE_DIR)
45ce59b
 if(WIN32 AND NOT CYGWIN)
45ce59b
 	set(INSTALL_CMAKE_DIR CMake)
45ce59b
 else()
45ce59b
-	set(INSTALL_CMAKE_DIR ${LIB_INSTALL_DIR}/cmake/yaml-cpp)
45ce59b
+	set(INSTALL_CMAKE_DIR ${LIB_INSTALL_DIR}/cmake/)
45ce59b
+endif()
45ce59b
 endif()
45ce59b
 
45ce59b
 file(RELATIVE_PATH REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_ROOT_DIR}")
45ce59b
 set(CONFIG_INCLUDE_DIRS "\${YAML_CPP_CMAKE_DIR}/${REL_INCLUDE_DIR}")
45ce59b
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in
45ce59b
-	"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake" @ONLY)
45ce59b
 
5be39b2
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in
5be39b2
+    "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${YAML_TARGET}-config.cmake" @ONLY)
5be39b2
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config-version.cmake.in
45ce59b
-	"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" @ONLY)
45ce59b
-
5be39b2
+    "${PROJECT_BINARY_DIR}/${YAML_TARGET}-config-version.cmake" @ONLY)
5be39b2
 install(FILES
45ce59b
-	"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake"
45ce59b
-	"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
45ce59b
-	DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
45ce59b
-install(EXPORT yaml-cpp-targets DESTINATION ${INSTALL_CMAKE_DIR})
5be39b2
+    "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${YAML_TARGET}-config.cmake"
5be39b2
+    "${PROJECT_BINARY_DIR}/${YAML_TARGET}-config-version.cmake"
5be39b2
+    DESTINATION "${INSTALL_CMAKE_DIR}${YAML_TARGET}" COMPONENT dev)
5be39b2
+install(EXPORT ${YAML_TARGET}-targets DESTINATION ${INSTALL_CMAKE_DIR}${YAML_TARGET})
45ce59b
 
45ce59b
 if(UNIX)
45ce59b
-	set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc)
5be39b2
-	configure_file("yaml-cpp.pc.cmake" ${PC_FILE} @ONLY)
5be39b2
-	install(FILES ${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
45ce59b
+if(BUILD_SHARED_LIBS)
5be39b2
+    set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc)
5be39b2
+else()
5be39b2
+    set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp-static.pc)
5be39b2
 endif()
5be39b2
+configure_file("yaml-cpp.pc.cmake" ${PC_FILE} @ONLY)
5be39b2
+install(FILES ${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
45ce59b
+endif(UNIX)
45ce59b
 
45ce59b
 
45ce59b
 ###
45ce59b
--- a/yaml-cpp-config.cmake.in
45ce59b
+++ b/yaml-cpp-config.cmake.in
45ce59b
@@ -8,7 +8,7 @@ get_filename_component(YAML_CPP_CMAKE_DI
45ce59b
 set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@")
45ce59b
 
45ce59b
 # Our library dependencies (contains definitions for IMPORTED targets)
45ce59b
-include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake")
45ce59b
+include("${YAML_CPP_CMAKE_DIR}/@YAML_TARGET@-targets.cmake")
45ce59b
 
45ce59b
 # These are IMPORTED targets created by yaml-cpp-targets.cmake
45ce59b
 set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@")