13801a9
diff --git a/CMakeLists.txt b/CMakeLists.txt
13801a9
index adaf04c..c68d430 100644
13801a9
--- a/CMakeLists.txt
13801a9
+++ b/CMakeLists.txt
13801a9
@@ -81,7 +81,7 @@ IF(NOT OpenIGTLink_INSTALL_INCLUDE_DIR)
13801a9
 ENDIF(NOT OpenIGTLink_INSTALL_INCLUDE_DIR)
13801a9
 
13801a9
 IF(NOT OpenIGTLink_INSTALL_PACKAGE_DIR)
13801a9
-  SET(OpenIGTLink_INSTALL_PACKAGE_DIR ${OpenIGTLink_INSTALL_LIB_DIR}
13801a9
+  SET(OpenIGTLink_INSTALL_PACKAGE_DIR "${OpenIGTLink_INSTALL_LIB_DIR}/cmake/igtl-${OpenIGTLink_VERSION_MAJOR}.${OpenIGTLink_VERSION_MINOR}"
13801a9
     CACHE INTERNAL "")
13801a9
 ENDIF(NOT OpenIGTLink_INSTALL_PACKAGE_DIR)
13801a9
 
13801a9
@@ -188,9 +188,8 @@ CMAKE_EXPORT_BUILD_SETTINGS(${OpenIGTLink_BINARY_DIR}/OpenIGTLinkBuildSettings.c
13801a9
 
13801a9
 INSTALL(FILES
13801a9
   ${OpenIGTLink_BINARY_DIR}/OpenIGTLinkBuildSettings.cmake
13801a9
-  ${OpenIGTLink_LIBRARY_TARGETS_FILE}
13801a9
   ${OpenIGTLink_BINARY_DIR}/UseOpenIGTLink.cmake
13801a9
-  ${OpenIGTLink_BINARY_DIR}/OpenIGTLinkConfig.cmake
13801a9
+  ${OpenIGTLink_BINARY_DIR}/Utilities/OpenIGTLinkConfig.cmake
13801a9
   DESTINATION ${OpenIGTLink_INSTALL_PACKAGE_DIR}
13801a9
   COMPONENT Development
13801a9
   )
13801a9
@@ -236,11 +235,15 @@ ENDIF(OpenIGTLink_BUILD_EXAMPLES)
13801a9
 
13801a9
 #-----------------------------------------------------------------------------
13801a9
 # Export targets
13801a9
-export(TARGETS
13801a9
-  OpenIGTLink
13801a9
+export(TARGETS OpenIGTLink
13801a9
   FILE "${OpenIGTLink_LIBRARY_TARGETS_FILE}"
13801a9
   )
13801a9
 
13801a9
+# Export targets for install
13801a9
+INSTALL(EXPORT OpenIGTLink
13801a9
+  DESTINATION "${OpenIGTLink_INSTALL_PACKAGE_DIR}"
13801a9
+  FILE "OpenIGTLinkTargets.cmake"
13801a9
+  )
13801a9
 
13801a9
 #-----------------------------------------------------------------------------
13801a9
 # Tests
13801a9
diff --git a/GenerateOpenIGTLinkConfig.cmake b/GenerateOpenIGTLinkConfig.cmake
13801a9
index 94f7d62..90602b9 100644
13801a9
--- a/GenerateOpenIGTLinkConfig.cmake
13801a9
+++ b/GenerateOpenIGTLinkConfig.cmake
13801a9
@@ -41,8 +41,11 @@ CONFIGURE_FILE(${OpenIGTLink_SOURCE_DIR}/OpenIGTLinkConfig.cmake.in
13801a9
 #-----------------------------------------------------------------------------
13801a9
 # Settings specific to the install tree.
13801a9
 
13801a9
+# store old OpenIGTLink_LIBRARY_TARGETS_FILE
13801a9
+SET(OpenIGTLink_LIBRARY_TARGETS_FILE_BUILDTREE ${OpenIGTLink_LIBRARY_TARGETS_FILE})
13801a9
+
13801a9
 # The library dependencies file.
13801a9
-SET(OpenIGTLink_LIBRARY_DEPENDS_FILE "\${OpenIGTLink_INSTALL_PREFIX}/${OpenIGTLink_INSTALL_PACKAGE_DIR}/OpenIGTLinkLibraryDepends.cmake")
13801a9
+SET(OpenIGTLink_LIBRARY_TARGETS_FILE "\${OpenIGTLink_INSTALL_PREFIX}/${OpenIGTLink_INSTALL_PACKAGE_DIR}/OpenIGTLinkTargets.cmake")
13801a9
 
13801a9
 # The "use" file.
13801a9
 SET(OpenIGTLink_USE_FILE \${OpenIGTLink_INSTALL_PREFIX}/${OpenIGTLink_INSTALL_PACKAGE_DIR}/UseOpenIGTLink.cmake)
13801a9
@@ -65,20 +68,12 @@ SET(OpenIGTLink_LIBRARY_DIRS_CONFIG "\${OpenIGTLink_INSTALL_PREFIX}/${OpenIGTLin
13801a9
 #-----------------------------------------------------------------------------
13801a9
 # Configure OpenIGTLinkConfig.cmake for the install tree.
13801a9
 
13801a9
-# Construct the proper number of GET_FILENAME_COMPONENT(... PATH)
13801a9
-# calls to compute the installation prefix.
13801a9
-STRING(REGEX REPLACE "/" ";" OpenIGTLink_INSTALL_PACKAGE_DIR_COUNT
13801a9
-  "${OpenIGTLink_INSTALL_PACKAGE_DIR}")
13801a9
 SET(OpenIGTLink_CONFIG_CODE "
13801a9
-# Compute the installation prefix from this OpenIGTLinkConfig.cmake file location.
13801a9
-GET_FILENAME_COMPONENT(OpenIGTLink_INSTALL_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
13801a9
-FOREACH(p ${OpenIGTLink_INSTALL_PACKAGE_DIR_COUNT})
13801a9
-  SET(OpenIGTLink_CONFIG_CODE
13801a9
-    "${OpenIGTLink_CONFIG_CODE}\nGET_FILENAME_COMPONENT(OpenIGTLink_INSTALL_PREFIX \"\${OpenIGTLink_INSTALL_PREFIX}\" PATH)"
13801a9
-    )
13801a9
-ENDFOREACH(p)
13801a9
-
13801a9
+SET(OpenIGTLink_INSTALL_PREFIX \"${CMAKE_INSTALL_PREFIX}\")")
13801a9
 
13801a9
 CONFIGURE_FILE(${OpenIGTLink_SOURCE_DIR}/OpenIGTLinkConfig.cmake.in
13801a9
                ${OpenIGTLink_BINARY_DIR}/Utilities/OpenIGTLinkConfig.cmake @ONLY IMMEDIATE)
13801a9
 
13801a9
+# restore old OpenIGTLink_LIBRARY_TARGETS_FILE
13801a9
+SET(OpenIGTLink_LIBRARY_TARGETS_FILE ${OpenIGTLink_LIBRARY_TARGETS_FILE_BUILDTREE})
13801a9
+
13801a9
diff --git a/OpenIGTLinkConfig.cmake.in b/OpenIGTLinkConfig.cmake.in
13801a9
index 2dc5b00..ad9bcea 100644
13801a9
--- a/OpenIGTLinkConfig.cmake.in
13801a9
+++ b/OpenIGTLinkConfig.cmake.in
13801a9
@@ -47,5 +47,5 @@ SET(OpenIGTLink_CableSwig_DIR "@OpenIGTLink_CableSwig_DIR_CONFIG@")
13801a9
 SET(OpenIGTLink_LIBRARIES OpenIGTLink)
13801a9
 
13801a9
 # The OpenIGTLink library targets.
13801a9
-SET(OpenIGTLink_LIBRARY_TARGETS_FILE @OpenIGTLink_LIBRARY_TARGETS_FILE@)
13801a9
+SET(OpenIGTLink_LIBRARY_TARGETS_FILE "@OpenIGTLink_LIBRARY_TARGETS_FILE@")
13801a9
 include(${OpenIGTLink_LIBRARY_TARGETS_FILE})
13801a9
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
13801a9
index 536c11f..ddd5d87 100644
13801a9
--- a/Source/CMakeLists.txt
13801a9
+++ b/Source/CMakeLists.txt
13801a9
@@ -30,8 +30,7 @@ ENDIF(OpenIGTLink_PLATFORM_WIN32)
13801a9
 
13801a9
 ADD_SUBDIRECTORY( igtlutil )
13801a9
 
13801a9
-set(OpenIGTLink_INCLUDE_DIRS
13801a9
-  PUBLIC
13801a9
+SET(OpenIGTLink_INCLUDE_DIRS
13801a9
   ${CMAKE_BINARY_DIR}
13801a9
   ${CMAKE_CURRENT_SOURCE_DIR}
13801a9
   ${CMAKE_CURRENT_BINARY_DIR}
13801a9
@@ -180,21 +179,16 @@ IF (${OpenIGTLink_PROTOCOL_VERSION} GREATER "1" )
13801a9
     )
13801a9
 ENDIF ( ${OpenIGTLink_PROTOCOL_VERSION} GREATER "1")
13801a9
 
13801a9
-IF( ${CMAKE_GENERATOR} MATCHES "Visual Studio" )
13801a9
-ADD_LIBRARY(OpenIGTLink
13801a9
-  ${OpenIGTLink_SOURCES}
13801a9
-  ${OpenIGTLink_INCLUDE_FILES}
13801a9
-  )
13801a9
-ELSE ( ${CMAKE_GENERATOR} MATCHES "Visual Studio" )
13801a9
-ADD_LIBRARY(OpenIGTLink
13801a9
-  ${OpenIGTLink_SOURCES}
13801a9
-  )
13801a9
-ENDIF( ${CMAKE_GENERATOR} MATCHES "Visual Studio" )
13801a9
+ADD_LIBRARY(OpenIGTLink ${OpenIGTLink_SOURCES} ${OpenIGTLink_INCLUDE_FILES})
13801a9
+foreach(p IN LISTS OpenIGTLink_INCLUDE_DIRS)
13801a9
+  target_include_directories(OpenIGTLink PUBLIC 
13801a9
+    $<BUILD_INTERFACE:${p}>)
13801a9
+endforeach()
13801a9
+target_include_directories(OpenIGTLink PUBLIC 
13801a9
+  $<INSTALL_INTERFACE:${OpenIGTLink_INSTALL_INCLUDE_DIR}>)
13801a9
+
13801a9
+TARGET_LINK_LIBRARIES(OpenIGTLink PUBLIC ${LINK_LIBS})
13801a9
 
13801a9
-include_directories(OpenIGTLink ${OpenIGTLink_INCLUDE_DIRS})
13801a9
-TARGET_LINK_LIBRARIES(OpenIGTLink
13801a9
-  ${LINK_LIBS}
13801a9
-  )
13801a9
 IF(MSVC)
13801a9
   target_compile_options(OpenIGTLink PRIVATE /MP)
13801a9
 ENDIF()
13801a9
@@ -208,7 +202,7 @@ INSTALL(FILES ${OpenIGTLink_INCLUDE_FILES}
13801a9
   DESTINATION ${OpenIGTLink_INSTALL_INCLUDE_DIR}
13801a9
   COMPONENT Development)
13801a9
 
13801a9
-INSTALL(TARGETS OpenIGTLink
13801a9
+INSTALL(TARGETS OpenIGTLink EXPORT OpenIGTLink
13801a9
   RUNTIME DESTINATION ${OpenIGTLink_INSTALL_BIN_DIR} COMPONENT RuntimeLibraries
13801a9
   LIBRARY DESTINATION ${OpenIGTLink_INSTALL_LIB_DIR} COMPONENT RuntimeLibraries
13801a9
-  ARCHIVE DESTINATION ${OpenIGTLink_INSTALL_LIB_DIR} COMPONENT Development)
13801a9
\ No newline at end of file
13801a9
+  ARCHIVE DESTINATION ${OpenIGTLink_INSTALL_LIB_DIR} COMPONENT Development)