diff --git a/BulletConfig.cmake.in b/BulletConfig.cmake.in
index f5dc7bdbb..c5b135c0c 100644
--- a/BulletConfig.cmake.in
+++ b/BulletConfig.cmake.in
@@ -14,12 +14,16 @@
 #  BULLET_ROOT_DIR           - The base directory of Bullet
 #  BULLET_VERSION_STRING     - A human-readable string containing the version
 
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/BulletExport.cmake")
+
 set ( BULLET_FOUND 1 )
-set ( BULLET_USE_FILE     "@BULLET_USE_FILE@" )
+set ( BULLET_USE_FILE     "${PACKAGE_PREFIX_DIR}/@BULLET_USE_FILE@" )
 set ( BULLET_DEFINITIONS  "@BULLET_DEFINITIONS@" )
-set ( BULLET_INCLUDE_DIR  "@INCLUDE_INSTALL_DIR@" )
-set ( BULLET_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@" )
+set ( BULLET_INCLUDE_DIR  "${PACKAGE_PREFIX_DIR}/@INCLUDE_INSTALL_DIR@" )
+set ( BULLET_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/@INCLUDE_INSTALL_DIR@" )
 set ( BULLET_LIBRARIES    "@BULLET_LIBRARIES@" )
-set ( BULLET_LIBRARY_DIRS "@LIB_DESTINATION@" )
-set ( BULLET_ROOT_DIR     "@CMAKE_INSTALL_PREFIX@" )
-set ( BULLET_VERSION_STRING "@BULLET_VERSION@" )
\ No newline at end of file
+set ( BULLET_LIBRARY_DIRS "${PACKAGE_PREFIX_DIR}/@LIB_DESTINATION@" )
+set ( BULLET_ROOT_DIR     "${PACKAGE_PREFIX_DIR}" )
+set ( BULLET_VERSION_STRING "@BULLET_VERSION@" )
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9e04fe3e7..8b5ae7ed8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.4.3)
+cmake_minimum_required(VERSION 2.8.11)
 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
 cmake_policy(SET CMP0017 NEW)
 #this line has to appear before 'PROJECT' in order to be able to disable incremental linking
@@ -15,6 +15,9 @@ IF(COMMAND cmake_policy)
    endif(POLICY CMP0042)
 ENDIF(COMMAND cmake_policy)
 
+include(CMakePackageConfigHelpers)
+include(GNUInstallDirs)
+
 IF (NOT CMAKE_BUILD_TYPE)
 # SET(CMAKE_BUILD_TYPE "Debug")
  SET(CMAKE_BUILD_TYPE "Release")
@@ -430,11 +433,10 @@ IF(INSTALL_LIBS)
 		ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 	ENDIF(BUILD_EXTRAS)
 
-	SET (LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
-	SET (LIB_DESTINATION "lib${LIB_SUFFIX}" CACHE STRING "Library directory name")
+	SET (LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Library directory name")
 	## the following are directories where stuff will be installed to
-	SET(INCLUDE_INSTALL_DIR "include/bullet/" CACHE PATH "The subdirectory to the header prefix")
-	SET(PKGCONFIG_INSTALL_PREFIX "lib${LIB_SUFFIX}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
+	SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/bullet/" CACHE PATH "The subdirectory to the header prefix")
+	SET(PKGCONFIG_INSTALL_PREFIX "${CMAKE_INSTALL_LIBDIR}/pkgconfig/" CACHE STRING "Base directory for pkgconfig files")
 	IF(NOT MSVC)
 	  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/bullet.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/bullet.pc @ONLY)
   	INSTALL(
@@ -453,19 +455,34 @@ IF (BUILD_UNIT_TESTS)
 	SUBDIRS(test)
 ENDIF()
 
-set (BULLET_CONFIG_CMAKE_PATH lib${LIB_SUFFIX}/cmake/bullet )
-list (APPEND BULLET_LIBRARIES LinearMath)
-list (APPEND BULLET_LIBRARIES Bullet3Common)
-list (APPEND BULLET_LIBRARIES BulletInverseDynamics)
-list (APPEND BULLET_LIBRARIES BulletCollision)
-list (APPEND BULLET_LIBRARIES BulletDynamics)
-list (APPEND BULLET_LIBRARIES BulletSoftBody)
+set (BULLET_CONFIG_CMAKE_PATH ${CMAKE_INSTALL_LIBDIR}/cmake/bullet-${BULLET_VERSION})
+list (APPEND BULLET_LIBRARIES Bullet::LinearMath)
+list (APPEND BULLET_LIBRARIES Bullet::Bullet3Common)
+list (APPEND BULLET_LIBRARIES Bullet::BulletInverseDynamics)
+list (APPEND BULLET_LIBRARIES Bullet::BulletCollision)
+list (APPEND BULLET_LIBRARIES Bullet::BulletDynamics)
+list (APPEND BULLET_LIBRARIES Bullet::BulletSoftBody)
 set (BULLET_USE_FILE ${BULLET_CONFIG_CMAKE_PATH}/UseBullet.cmake)
-configure_file 	( ${CMAKE_CURRENT_SOURCE_DIR}/BulletConfig.cmake.in
-					${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
-					@ONLY ESCAPE_QUOTES
-				)
-install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/UseBullet.cmake
-		${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
-		DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
-	)
+configure_package_config_file(
+	${CMAKE_CURRENT_SOURCE_DIR}/BulletConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
+	INSTALL_DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
+)
+install(
+	FILES ${CMAKE_CURRENT_SOURCE_DIR}/UseBullet.cmake ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake
+	DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
+)
+write_basic_package_version_file(
+	${CMAKE_CURRENT_BINARY_DIR}/BulletConfigVersion.cmake
+	VERSION ${BULLET_VERSION}
+	COMPATIBILITY ExactVersion
+)
+install(
+	FILES ${CMAKE_CURRENT_BINARY_DIR}/BulletConfigVersion.cmake
+	DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
+)
+install(
+	EXPORT Bullet
+	DESTINATION ${BULLET_CONFIG_CMAKE_PATH}
+	NAMESPACE Bullet::
+	FILE BulletExport.cmake
+)
diff --git a/Extras/BulletRobotics/CMakeLists.txt b/Extras/BulletRobotics/CMakeLists.txt
index a8d238197..c8d3e7c9f 100644
--- a/Extras/BulletRobotics/CMakeLists.txt
+++ b/Extras/BulletRobotics/CMakeLists.txt
@@ -1,12 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-		${BULLET_PHYSICS_SOURCE_DIR}/src
-		${BULLET_PHYSICS_SOURCE_DIR}/examples
-		${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs
-		${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/enet/include
-		${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/clsocket/src
-)
-
 SET(BulletRobotics_SRCS
 		../../examples/SharedMemory/IKTrajectoryHelper.cpp
 		../../examples/SharedMemory/IKTrajectoryHelper.h
@@ -158,6 +149,15 @@ ADD_LIBRARY(BulletRobotics ${BulletRobotics_SRCS})
 SET_TARGET_PROPERTIES(BulletRobotics PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletRobotics PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(BulletRobotics PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/examples>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/enet/include>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/examples/ThirdPartyLibs/clsocket/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
+
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletRobotics BulletInverseDynamicsUtils BulletWorldImporter BulletFileLoader BulletSoftBody BulletDynamics BulletCollision BulletInverseDynamics LinearMath Bullet3Common)
 ENDIF (BUILD_SHARED_LIBS)
@@ -176,8 +176,9 @@ IF (INSTALL_EXTRA_LIBS)
 		)
 	INSTALL(TARGETS
 		BulletRobotics
-		LIBRARY DESTINATION lib${LIB_SUFFIX}
-		ARCHIVE DESTINATION lib${LIB_SUFFIX}
+		EXPORT Bullet
+		LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+		ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
 		)
 		
 		IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff --git a/Extras/ConvexDecomposition/CMakeLists.txt b/Extras/ConvexDecomposition/CMakeLists.txt
index 132a336fa..d77b8cf41 100644
--- a/Extras/ConvexDecomposition/CMakeLists.txt
+++ b/Extras/ConvexDecomposition/CMakeLists.txt
@@ -1,7 +1,3 @@
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/Extras/ConvexDecomposition ${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(ConvexDecomposition_SRCS
 	bestfitobb.cpp
 	ConvexBuilder.cpp
@@ -38,6 +34,13 @@ ADD_LIBRARY(ConvexDecomposition ${ConvexDecomposition_SRCS} ${ConvexDecompositio
 SET_TARGET_PROPERTIES(ConvexDecomposition PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(ConvexDecomposition PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(ConvexDecomposition PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/ConvexDecomposition>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/ConvexDecomposition>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
+
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(ConvexDecomposition BulletCollision LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -47,12 +50,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS ConvexDecomposition DESTINATION .)
+				INSTALL(TARGETS ConvexDecomposition EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS ConvexDecomposition
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/Extras/GIMPACTUtils/CMakeLists.txt b/Extras/GIMPACTUtils/CMakeLists.txt
index c32a885df..a551319e5 100644
--- a/Extras/GIMPACTUtils/CMakeLists.txt
+++ b/Extras/GIMPACTUtils/CMakeLists.txt
@@ -1,16 +1,18 @@
-INCLUDE_DIRECTORIES(
-${BULLET_PHYSICS_SOURCE_DIR}/Extras/GIMPACT/include
-${BULLET_PHYSICS_SOURCE_DIR}/src
-${BULLET_PHYSICS_SOURCE_DIR}/Extras/GIMPACTUtils
-${BULLET_PHYSICS_SOURCE_DIR}/Extras/ConvexDecomposition
-)
-
 ADD_LIBRARY(GIMPACTUtils
 btGImpactConvexDecompositionShape.cpp	btGImpactConvexDecompositionShape.h
 )
 SET_TARGET_PROPERTIES(GIMPACTUtils PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(GIMPACTUtils PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(GIMPACTUtils PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/GIMPACT/include>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/GIMPACTUtils>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/ConvexDecomposition>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/GIMPACTUtils>
+)
+
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(GIMPACTUtils ConvexDecomposition BulletCollision)
 ENDIF (BUILD_SHARED_LIBS)
@@ -20,12 +22,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS GIMPACTUtils DESTINATION .)
+				INSTALL(TARGETS GIMPACTUtils EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS GIMPACTUtils 
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/Extras/HACD/CMakeLists.txt b/Extras/HACD/CMakeLists.txt
index a91d1173c..a21e1b5b4 100644
--- a/Extras/HACD/CMakeLists.txt
+++ b/Extras/HACD/CMakeLists.txt
@@ -1,7 +1,3 @@
-INCLUDE_DIRECTORIES(
- ${BULLET_PHYSICS_SOURCE_DIR}/Extras/HACD
-)
-
 SET(HACD_SRCS
 	hacdGraph.cpp
 	hacdHACD.cpp
@@ -25,6 +21,11 @@ ADD_LIBRARY(HACD ${HACD_SRCS} ${HACD_HDRS})
 SET_TARGET_PROPERTIES(HACD PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(HACD PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(HACD PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/HACD>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/HACD>
+)
+
 #IF (BUILD_SHARED_LIBS)
 #  TARGET_LINK_LIBRARIES(HACD BulletCollision LinearMath)
 #ENDIF (BUILD_SHARED_LIBS)
@@ -34,12 +35,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS HACD DESTINATION .)
+				INSTALL(TARGETS HACD EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS HACD
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 					DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN "*.inl" PATTERN
diff --git a/Extras/InverseDynamics/CMakeLists.txt b/Extras/InverseDynamics/CMakeLists.txt
index 22e953a44..90ce398a0 100644
--- a/Extras/InverseDynamics/CMakeLists.txt
+++ b/Extras/InverseDynamics/CMakeLists.txt
@@ -1,7 +1,3 @@
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 ADD_LIBRARY(
 BulletInverseDynamicsUtils
 CloneTreeCreator.cpp
@@ -21,6 +17,12 @@ User2InternalIndex.cpp
 SET_TARGET_PROPERTIES(BulletInverseDynamicsUtils PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletInverseDynamicsUtils PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(BulletInverseDynamicsUtils PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/InverseDynamics>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
+
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletInverseDynamicsUtils BulletInverseDynamics BulletDynamics BulletCollision Bullet3Common LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -30,12 +32,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletInverseDynamicsUtils  DESTINATION .)
+				INSTALL(TARGETS BulletInverseDynamicsUtils EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS BulletInverseDynamicsUtils
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/Extras/Serialize/BulletFileLoader/CMakeLists.txt b/Extras/Serialize/BulletFileLoader/CMakeLists.txt
index 9b5dce7ea..a4b48ed58 100644
--- a/Extras/Serialize/BulletFileLoader/CMakeLists.txt
+++ b/Extras/Serialize/BulletFileLoader/CMakeLists.txt
@@ -1,7 +1,3 @@
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(BulletFileLoader_SRCS
 bChunk.cpp
 bDNA.cpp
@@ -20,6 +16,11 @@ btBulletFile.h
 
 ADD_LIBRARY(BulletFileLoader ${BulletFileLoader_SRCS} ${BulletFileLoader_HDRS})
 
+target_include_directories(BulletFileLoader PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
+
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletFileLoader LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -32,12 +33,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletFileLoader DESTINATION .)
+				INSTALL(TARGETS BulletFileLoader EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS BulletFileLoader
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(
 					DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 					DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
diff --git a/Extras/Serialize/BulletWorldImporter/CMakeLists.txt b/Extras/Serialize/BulletWorldImporter/CMakeLists.txt
index 3e6f00f10..caf46ff65 100644
--- a/Extras/Serialize/BulletWorldImporter/CMakeLists.txt
+++ b/Extras/Serialize/BulletWorldImporter/CMakeLists.txt
@@ -1,8 +1,3 @@
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-	${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
-)
-
 ADD_LIBRARY(
 BulletWorldImporter
 btBulletWorldImporter.cpp
@@ -14,6 +9,13 @@ btWorldImporter.h
 SET_TARGET_PROPERTIES(BulletWorldImporter PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletWorldImporter PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(BulletWorldImporter PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/BulletFileLoader>
+)
+
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletWorldImporter BulletDynamics BulletCollision BulletFileLoader LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -23,12 +25,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletWorldImporter DESTINATION .)
+				INSTALL(TARGETS BulletWorldImporter EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS BulletWorldImporter
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt b/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt
index 3a9606288..60ddf5aff 100644
--- a/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt
+++ b/Extras/Serialize/BulletXmlWorldImporter/CMakeLists.txt
@@ -1,9 +1,3 @@
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-	${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader
-	${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter
-)
-
 ADD_LIBRARY(
 	BulletXmlWorldImporter
 	btBulletXmlWorldImporter.cpp
@@ -21,6 +15,15 @@ ADD_LIBRARY(
 SET_TARGET_PROPERTIES(BulletXmlWorldImporter  PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletXmlWorldImporter PROPERTIES SOVERSION ${BULLET_VERSION})
 
+target_include_directories(BulletXmlWorldImporter PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletFileLoader>
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/BulletWorldImporter>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/BulletFileLoader>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}/BulletWorldImporter>
+)
+
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletXmlWorldImporter BulletWorldImporter BulletDynamics BulletCollision BulletFileLoader LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -30,12 +33,13 @@ IF (INSTALL_EXTRA_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletXmlWorldImporter DESTINATION .)
+				INSTALL(TARGETS BulletXmlWorldImporter EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS BulletXmlWorldImporter 
-                                        RUNTIME DESTINATION bin
-                                        LIBRARY DESTINATION lib${LIB_SUFFIX}
-                                        ARCHIVE DESTINATION lib${LIB_SUFFIX})
+										EXPORT Bullet
+                                        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+                                        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                                        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
diff --git a/examples/ThirdPartyLibs/clsocket/CMakeLists.txt b/examples/ThirdPartyLibs/clsocket/CMakeLists.txt
index bb9a4c1e1..c01f8cc53 100644
--- a/examples/ThirdPartyLibs/clsocket/CMakeLists.txt
+++ b/examples/ThirdPartyLibs/clsocket/CMakeLists.txt
@@ -6,8 +6,6 @@
 #set(BUILD_MINOR "4")
 #set(BUILD_VERSION "3")
 
-include_directories(src)
-
 SET(CLSOCKET_HEADERS
 src/ActiveSocket.h
 src/Host.h
@@ -63,10 +61,14 @@ else()
     endif()
 endif()
 TARGET_LINK_LIBRARIES(clsocket ${PROJECT_LIBS})
+target_include_directories(clsocket PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>
+)
 
 # install into configured prefix
 if(NOT CLSOCKET_DEP_ONLY)
-    install(TARGETS clsocket ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
+    install(TARGETS clsocket EXPORT Bullet ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
     install(FILES ${CLSOCKET_HEADERS} DESTINATION include)
 else()
 
diff --git a/src/Bullet3Collision/CMakeLists.txt b/src/Bullet3Collision/CMakeLists.txt
index 130095cc0..e811da6f4 100644
--- a/src/Bullet3Collision/CMakeLists.txt
+++ b/src/Bullet3Collision/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(Bullet3Collision_SRCS
 	BroadPhaseCollision/b3DynamicBvh.cpp
 	BroadPhaseCollision/b3DynamicBvhBroadphase.cpp
@@ -58,6 +53,10 @@ SET(Bullet3Collision_HDRS
 )
 
 ADD_LIBRARY(Bullet3Collision ${Bullet3Collision_SRCS} ${Bullet3Collision_HDRS})
+target_include_directories(Bullet3Collision PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 if (BUILD_SHARED_LIBS)
   target_link_libraries(Bullet3Collision Bullet3Geometry)
 endif ()
@@ -69,12 +68,13 @@ IF (INSTALL_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet3Collision DESTINATION .)
+				INSTALL(TARGETS Bullet3Collision EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS Bullet3Collision
-					RUNTIME DESTINATION bin
-					LIBRARY DESTINATION lib${LIB_SUFFIX}
-					ARCHIVE DESTINATION lib${LIB_SUFFIX})
+					EXPORT Bullet
+					RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+					LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+					ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/Bullet3Common/CMakeLists.txt b/src/Bullet3Common/CMakeLists.txt
index e899e67d9..63fbdedc8 100644
--- a/src/Bullet3Common/CMakeLists.txt
+++ b/src/Bullet3Common/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(Bullet3Common_SRCS
 	b3AlignedAllocator.cpp
 	b3Vector3.cpp
@@ -35,6 +30,10 @@ SET(Bullet3Common_HDRS
 )
 
 ADD_LIBRARY(Bullet3Common ${Bullet3Common_SRCS} ${Bullet3Common_HDRS})
+target_include_directories(Bullet3Common PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES SOVERSION ${BULLET_VERSION})
 
@@ -43,12 +42,13 @@ IF (INSTALL_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet3Common DESTINATION .)
+				INSTALL(TARGETS Bullet3Common EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS Bullet3Common
-					RUNTIME DESTINATION bin
-					LIBRARY DESTINATION lib${LIB_SUFFIX}
-					ARCHIVE DESTINATION lib${LIB_SUFFIX})
+					EXPORT Bullet
+					RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+					LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+					ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/Bullet3Dynamics/CMakeLists.txt b/src/Bullet3Dynamics/CMakeLists.txt
index 94c120d9b..82f1a2b30 100644
--- a/src/Bullet3Dynamics/CMakeLists.txt
+++ b/src/Bullet3Dynamics/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(Bullet3Dynamics_SRCS
 	b3CpuRigidBodyPipeline.cpp
 	ConstraintSolver/b3FixedConstraint.cpp
@@ -30,6 +25,10 @@ SET(Bullet3Dynamics_HDRS
 )
 
 ADD_LIBRARY(Bullet3Dynamics ${Bullet3Dynamics_SRCS} ${Bullet3Dynamics_HDRS})
+target_include_directories(Bullet3Dynamics PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 if (BUILD_SHARED_LIBS)
   target_link_libraries(Bullet3Dynamics Bullet3Collision)
 endif ()
@@ -41,12 +40,13 @@ IF (INSTALL_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet3Dynamics DESTINATION .)
+				INSTALL(TARGETS Bullet3Dynamics EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS Bullet3Dynamics
-					RUNTIME DESTINATION bin
-					LIBRARY DESTINATION lib${LIB_SUFFIX}
-					ARCHIVE DESTINATION lib${LIB_SUFFIX})
+					EXPORT Bullet
+					RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+					LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+					ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/Bullet3Geometry/CMakeLists.txt b/src/Bullet3Geometry/CMakeLists.txt
index 820687270..b5ae81052 100644
--- a/src/Bullet3Geometry/CMakeLists.txt
+++ b/src/Bullet3Geometry/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(Bullet3Geometry_SRCS
 	b3ConvexHullComputer.cpp
 	b3GeometryUtil.cpp
@@ -16,6 +11,10 @@ SET(Bullet3Geometry_HDRS
 )
 
 ADD_LIBRARY(Bullet3Geometry ${Bullet3Geometry_SRCS} ${Bullet3Geometry_HDRS})
+target_include_directories(Bullet3Geometry PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 if (BUILD_SHARED_LIBS)
   target_link_libraries(Bullet3Geometry Bullet3Common)
 endif()
@@ -27,12 +26,13 @@ IF (INSTALL_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet3Geometry DESTINATION .)
+				INSTALL(TARGETS Bullet3Geometry EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS Bullet3Geometry
-					RUNTIME DESTINATION bin
-					LIBRARY DESTINATION lib${LIB_SUFFIX}
-					ARCHIVE DESTINATION lib${LIB_SUFFIX})
+					EXPORT Bullet
+					RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+					LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+					ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/Bullet3OpenCL/CMakeLists.txt b/src/Bullet3OpenCL/CMakeLists.txt
index 45df06ff6..cf9549617 100644
--- a/src/Bullet3OpenCL/CMakeLists.txt
+++ b/src/Bullet3OpenCL/CMakeLists.txt
@@ -1,5 +1,3 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src  )
-
 ADD_DEFINITIONS(-DB3_USE_CLEW)
 
 SET(Bullet3OpenCL_clew_SRCS
@@ -44,6 +42,10 @@ SET(Bullet3OpenCL_clew_HDRS
 ADD_LIBRARY(Bullet3OpenCL_clew ${Bullet3OpenCL_clew_SRCS} ${Bullet3OpenCL_clew_HDRS})
 SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(Bullet3OpenCL_clew PROPERTIES SOVERSION ${BULLET_VERSION})
+target_include_directories(Bullet3OpenCL_clew PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(Bullet3OpenCL_clew LinearMath Bullet3Dynamics ${CMAKE_DL_LIBS})
 ENDIF (BUILD_SHARED_LIBS)
@@ -54,11 +56,11 @@ IF (INSTALL_LIBS)
 		#INSTALL of other files requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet3OpenCL_clew DESTINATION .)
+				INSTALL(TARGETS Bullet3OpenCL_clew EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet3OpenCL_clew RUNTIME DESTINATION bin
-								LIBRARY DESTINATION lib${LIB_SUFFIX}
-								ARCHIVE DESTINATION lib${LIB_SUFFIX})
+				INSTALL(TARGETS Bullet3OpenCL_clew EXPORT Bullet RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+								LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+								ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
 #				INSTALL(FILES ../btBullet3OpenCL_clewCommon.h
diff --git a/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt b/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt
index 125576634..499e474fa 100644
--- a/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt
+++ b/src/Bullet3Serialize/Bullet2FileLoader/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(Bullet2FileLoader_SRCS
 	b3BulletFile.cpp
 	b3Chunk.cpp
@@ -24,6 +19,10 @@ SET(Bullet2FileLoader_HDRS
 )
 
 ADD_LIBRARY(Bullet2FileLoader ${Bullet2FileLoader_SRCS} ${Bullet2FileLoader_HDRS})
+target_include_directories(Bullet2FileLoader PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 if (BUILD_SHARED_LIBS)
   target_link_libraries(Bullet2FileLoader Bullet3Common)
 endif ()
@@ -35,12 +34,13 @@ IF (INSTALL_LIBS)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS Bullet2FileLoader DESTINATION .)
+				INSTALL(TARGETS Bullet2FileLoader EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS Bullet2FileLoader
-					RUNTIME DESTINATION bin
-					LIBRARY DESTINATION lib${LIB_SUFFIX}
-					ARCHIVE DESTINATION lib${LIB_SUFFIX})
+					EXPORT Bullet
+					RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+					LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+					ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/BulletCollision/CMakeLists.txt b/src/BulletCollision/CMakeLists.txt
index 85c5fc8b6..570eda48e 100644
--- a/src/BulletCollision/CMakeLists.txt
+++ b/src/BulletCollision/CMakeLists.txt
@@ -1,5 +1,3 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src  )
-
 SET(BulletCollision_SRCS
 	BroadphaseCollision/btAxisSweep3.cpp
 	BroadphaseCollision/btBroadphaseProxy.cpp
@@ -254,6 +252,10 @@ SET(BulletCollision_HDRS
 ADD_LIBRARY(BulletCollision ${BulletCollision_SRCS} ${BulletCollision_HDRS})
 SET_TARGET_PROPERTIES(BulletCollision PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletCollision PROPERTIES SOVERSION ${BULLET_VERSION})
+target_include_directories(BulletCollision PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(BulletCollision LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -264,11 +266,11 @@ IF (INSTALL_LIBS)
 		#INSTALL of other files requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletCollision DESTINATION .)
+				INSTALL(TARGETS BulletCollision EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletCollision RUNTIME DESTINATION bin
-								LIBRARY DESTINATION lib${LIB_SUFFIX}
-								ARCHIVE DESTINATION lib${LIB_SUFFIX})
+				INSTALL(TARGETS BulletCollision EXPORT Bullet RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+								LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+								ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
 				INSTALL(FILES ../btBulletCollisionCommon.h
diff --git a/src/BulletDynamics/CMakeLists.txt b/src/BulletDynamics/CMakeLists.txt
index f8a6f34ba..f031852fa 100644
--- a/src/BulletDynamics/CMakeLists.txt
+++ b/src/BulletDynamics/CMakeLists.txt
@@ -1,7 +1,3 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src  )
-
-
-
 SET(BulletDynamics_SRCS
 	Character/btKinematicCharacterController.cpp
 	ConstraintSolver/btConeTwistConstraint.cpp
@@ -134,6 +130,10 @@ SET(BulletDynamics_HDRS
 ADD_LIBRARY(BulletDynamics ${BulletDynamics_SRCS} ${BulletDynamics_HDRS})
 SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletDynamics PROPERTIES SOVERSION ${BULLET_VERSION})
+target_include_directories(BulletDynamics PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletDynamics BulletCollision LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -142,11 +142,11 @@ IF (INSTALL_LIBS)
 	IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletDynamics DESTINATION .)
+				INSTALL(TARGETS BulletDynamics EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletDynamics RUNTIME DESTINATION bin
-								LIBRARY DESTINATION lib${LIB_SUFFIX}
-								ARCHIVE DESTINATION lib${LIB_SUFFIX})
+				INSTALL(TARGETS BulletDynamics EXPORT Bullet RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+								LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+								ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/BulletInverseDynamics/CMakeLists.txt b/src/BulletInverseDynamics/CMakeLists.txt
index 3331c27ea..bb5f3f909 100644
--- a/src/BulletInverseDynamics/CMakeLists.txt
+++ b/src/BulletInverseDynamics/CMakeLists.txt
@@ -1,5 +1,3 @@
-INCLUDE_DIRECTORIES( ${BULLET_PHYSICS_SOURCE_DIR}/src  )
-
 SET(BulletInverseDynamics_SRCS
 	IDMath.cpp
 	MultiBodyTree.cpp
@@ -32,6 +30,10 @@ SET(BulletInverseDynamics_HDRS
 ADD_LIBRARY(BulletInverseDynamics ${BulletInverseDynamics_SRCS} ${BulletInverseDynamics_HDRS})
 SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletInverseDynamics PROPERTIES SOVERSION ${BULLET_VERSION})
+target_include_directories(BulletInverseDynamics PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 IF (BUILD_SHARED_LIBS)
   TARGET_LINK_LIBRARIES(BulletInverseDynamics Bullet3Common LinearMath)
 ENDIF (BUILD_SHARED_LIBS)
@@ -42,11 +44,11 @@ IF (INSTALL_LIBS)
 		#INSTALL of other files requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletInverseDynamics DESTINATION .)
+				INSTALL(TARGETS BulletInverseDynamics EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletInverseDynamics RUNTIME DESTINATION bin
-								LIBRARY DESTINATION lib${LIB_SUFFIX}
-								ARCHIVE DESTINATION lib${LIB_SUFFIX})
+				INSTALL(TARGETS BulletInverseDynamics EXPORT Bullet RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+								LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+								ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
 				INSTALL(FILES ../btBulletCollisionCommon.h
diff --git a/src/BulletSoftBody/CMakeLists.txt b/src/BulletSoftBody/CMakeLists.txt
index d43df1c67..0b452400e 100644
--- a/src/BulletSoftBody/CMakeLists.txt
+++ b/src/BulletSoftBody/CMakeLists.txt
@@ -1,9 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-${BULLET_PHYSICS_SOURCE_DIR}/src
-
-)
-
 #SUBDIRS( Solvers )
 
 SET(BulletSoftBody_SRCS
@@ -42,6 +36,10 @@ SET(BulletSoftBody_HDRS
 ADD_LIBRARY(BulletSoftBody  ${BulletSoftBody_SRCS} ${BulletSoftBody_HDRS})
 SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES SOVERSION ${BULLET_VERSION})
+target_include_directories(BulletSoftBody PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 IF (BUILD_SHARED_LIBS)
 	TARGET_LINK_LIBRARIES(BulletSoftBody BulletDynamics)
 ENDIF (BUILD_SHARED_LIBS)
@@ -50,11 +48,11 @@ IF (INSTALL_LIBS)
 	IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS BulletSoftBody DESTINATION .)
+				INSTALL(TARGETS BulletSoftBody EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-			INSTALL(TARGETS BulletSoftBody RUNTIME DESTINATION bin
-							LIBRARY DESTINATION lib${LIB_SUFFIX}
-							ARCHIVE DESTINATION lib${LIB_SUFFIX})
+			INSTALL(TARGETS BulletSoftBody EXPORT Bullet RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+							LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+							ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
diff --git a/src/LinearMath/CMakeLists.txt b/src/LinearMath/CMakeLists.txt
index ede21d9a7..efda63752 100644
--- a/src/LinearMath/CMakeLists.txt
+++ b/src/LinearMath/CMakeLists.txt
@@ -1,8 +1,3 @@
-
-INCLUDE_DIRECTORIES(
-	${BULLET_PHYSICS_SOURCE_DIR}/src
-)
-
 SET(LinearMath_SRCS
 	btAlignedAllocator.cpp
 	btConvexHull.cpp
@@ -49,18 +44,23 @@ SET(LinearMath_HDRS
 ADD_LIBRARY(LinearMath ${LinearMath_SRCS} ${LinearMath_HDRS})
 SET_TARGET_PROPERTIES(LinearMath PROPERTIES VERSION ${BULLET_VERSION})
 SET_TARGET_PROPERTIES(LinearMath PROPERTIES SOVERSION ${BULLET_VERSION})
+target_include_directories(LinearMath PUBLIC
+	$<BUILD_INTERFACE:${BULLET_PHYSICS_SOURCE_DIR}/src>
+	$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${INCLUDE_INSTALL_DIR}>
+)
 
 IF (INSTALL_LIBS)
 	IF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES)
 		#FILES_MATCHING requires CMake 2.6
 		IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
 			IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
-				INSTALL(TARGETS LinearMath DESTINATION .)
+				INSTALL(TARGETS LinearMath EXPORT Bullet DESTINATION .)
 			ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
 				INSTALL(TARGETS LinearMath
-					RUNTIME DESTINATION bin
-					LIBRARY DESTINATION lib${LIB_SUFFIX}
-					ARCHIVE DESTINATION lib${LIB_SUFFIX})
+					EXPORT Bullet
+					RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+					LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+					ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 				INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
 DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h"  PATTERN
 ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE)
