diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9addae60ce0d06a7bf154b7632bb26977b6875e6..1176c9874edc395c49631ccee5a36fc26ed1b451 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,7 @@ set(PROJECT_NAME hpp-fcl)
 set(PROJECT_DESCRIPTION
   "HPP fork of FCL -- The Flexible Collision Library"
   )
+SET(PROJECT_USE_CMAKE_EXPORT TRUE)
 
 include(cmake/eigen.cmake)
 include(cmake/boost.cmake)
@@ -73,16 +74,11 @@ search_for_boost()
 # Optional dependencies
 add_optional_dependency("octomap >= 1.6")
 if (OCTOMAP_FOUND)
-  link_directories(${OCTOMAP_LIBRARY_DIRS})
   SET(HPP_FCL_HAVE_OCTOMAP TRUE)
-  add_definitions (-DHPP_FCL_HAVE_OCTOMAP)
   string(REPLACE "." ";" VERSION_LIST ${OCTOMAP_VERSION})
   list(GET VERSION_LIST 0 OCTOMAP_MAJOR_VERSION)
   list(GET VERSION_LIST 1 OCTOMAP_MINOR_VERSION)
   list(GET VERSION_LIST 2 OCTOMAP_PATCH_VERSION)
-  add_definitions (-DOCTOMAP_MAJOR_VERSION=${OCTOMAP_MAJOR_VERSION}
-                   -DOCTOMAP_MINOR_VERSION=${OCTOMAP_MINOR_VERSION}
-                   -DOCTOMAP_PATCH_VERSION=${OCTOMAP_PATCH_VERSION})
   message(STATUS "FCL uses Octomap")
 else()
   SET(HPP_FCL_HAVE_OCTOMAP FALSE)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 498332f12109bae7402d0a701a0ae25fc346f7c3..b5e534ce1ed4a017e9c266f9e9bc12df0788138f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -105,6 +105,15 @@ else()
 endif()
 IF(OCTOMAP_FOUND)
   PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} octomap)
+  target_compile_definitions (${LIBRARY_NAME} PUBLIC
+    -DHPP_FCL_HAVE_OCTOMAP
+    -DOCTOMAP_MAJOR_VERSION=${OCTOMAP_MAJOR_VERSION}
+    -DOCTOMAP_MINOR_VERSION=${OCTOMAP_MINOR_VERSION}
+    -DOCTOMAP_PATCH_VERSION=${OCTOMAP_PATCH_VERSION})
 ENDIF(OCTOMAP_FOUND)
 
-install(TARGETS ${LIBRARY_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
+target_include_directories(${LIBRARY_NAME} PUBLIC
+  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+install(TARGETS ${LIBRARY_NAME}
+  EXPORT ${TARGETS_EXPORT_NAME}
+  DESTINATION ${CMAKE_INSTALL_LIBDIR})
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 11618f7261a3547f77b7e228614dda392846547c..a3d487da434689e4269b2fa924761f6f60376b3a 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -22,11 +22,7 @@ endmacro(add_fcl_test)
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 
 add_library(utility STATIC utility.cpp)
-target_include_directories(utility SYSTEM PUBLIC
-  ${EIGEN3_INCLUDE_DIRS}
-  ${Boost_INCLUDE_DIRS}
-  $<$<BOOL:${HPP_FCL_HAVE_OCTOMAP}>:${OCTOMAP_INCLUDE_DIRS}>
-  )
+target_link_libraries(utility hpp-fcl)
 
 add_fcl_test(math math.cpp)