diff --git a/BulletConfig.cmake.in b/BulletConfig.cmake.in index f5dc7bdbb..f5412dac3 100644 --- a/BulletConfig.cmake.in +++ b/BulletConfig.cmake.in @@ -3,6 +3,8 @@ # BulletConfig.cmake(.in) # +@PACKAGE_INIT@ + # Use the following variables to compile and link against Bullet: # BULLET_FOUND - True if Bullet was found on your system # BULLET_USE_FILE - The file making Bullet usable @@ -15,11 +17,20 @@ # BULLET_VERSION_STRING - A human-readable string containing the version set ( BULLET_FOUND 1 ) -set ( BULLET_USE_FILE "@BULLET_USE_FILE@" ) +set_and_check ( BULLET_USE_FILE "@PACKAGE_BULLET_CONFIG_CMAKE_PATH@/UseBullet.cmake" ) set ( BULLET_DEFINITIONS "@BULLET_DEFINITIONS@" ) -set ( BULLET_INCLUDE_DIR "@INCLUDE_INSTALL_DIR@" ) -set ( BULLET_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@" ) +set_and_check ( BULLET_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@" ) +set_and_check ( BULLET_INCLUDE_DIRS "@PACKAGE_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_and_check ( BULLET_LIBRARY_DIRS "@PACKAGE_LIB_DESTINATION@" ) +set_and_check ( BULLET_ROOT_DIR "@PACKAGE_CMAKE_INSTALL_PREFIX@" ) +set ( BULLET_VERSION_STRING "@BULLET_VERSION@" ) + +# Load targets +if(NOT TARGET Bullet3Common) + file(GLOB CONFIG_FILES "@PACKAGE_BULLET_CONFIG_CMAKE_PATH@/*Targets.cmake") + foreach(f ${CONFIG_FILES}) + include(${f}) + endforeach() + set(_DIR) +endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 68e0a93bc..872e14361 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.4.3) +cmake_minimum_required(VERSION 3.0) 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 @@ -465,23 +465,34 @@ IF (BUILD_UNIT_TESTS) SUBDIRS(test) ENDIF() -set (BULLET_CONFIG_CMAKE_PATH lib${LIB_SUFFIX}/cmake/bullet ) +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/BulletConfigVersion.cmake" + VERSION ${BULLET_VERSION} + COMPATIBILITY AnyNewerVersion +) + +set (BULLET_CONFIG_CMAKE_PATH share/bullet3 ) 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_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 - ) + +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/BulletConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake + PATH_VARS INCLUDE_INSTALL_DIR LIB_DESTINATION CMAKE_INSTALL_PREFIX BULLET_CONFIG_CMAKE_PATH + INSTALL_DESTINATION ${BULLET_CONFIG_CMAKE_PATH} +) + OPTION(INSTALL_CMAKE_FILES "Install generated CMake files" ON) IF (INSTALL_CMAKE_FILES) install ( FILES ${CMAKE_CURRENT_SOURCE_DIR}/UseBullet.cmake ${CMAKE_CURRENT_BINARY_DIR}/BulletConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/BulletConfigVersion.cmake DESTINATION ${BULLET_CONFIG_CMAKE_PATH} ) ENDIF (INSTALL_CMAKE_FILES) diff --git a/src/Bullet3Common/CMakeLists.txt b/src/Bullet3Common/CMakeLists.txt index e899e67d9..0ca702eb8 100644 --- a/src/Bullet3Common/CMakeLists.txt +++ b/src/Bullet3Common/CMakeLists.txt @@ -43,9 +43,12 @@ 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 Bullet3CommonTargets + DESTINATION .) ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) INSTALL(TARGETS Bullet3Common + EXPORT Bullet3CommonTargets RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) @@ -59,5 +62,8 @@ DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES FRAMEWORK true) SET_TARGET_PROPERTIES(Bullet3Common PROPERTIES PUBLIC_HEADER "${Bullet3Common_HDRS}") ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + + INSTALL(EXPORT Bullet3CommonTargets + DESTINATION ${BULLET_CONFIG_CMAKE_PATH}) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ENDIF (INSTALL_LIBS) diff --git a/src/BulletCollision/CMakeLists.txt b/src/BulletCollision/CMakeLists.txt index f5d725562..e98de8ba2 100644 --- a/src/BulletCollision/CMakeLists.txt +++ b/src/BulletCollision/CMakeLists.txt @@ -266,11 +266,15 @@ 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 BulletCollisionTargets + 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 BulletCollisionTargets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) INSTALL(FILES ../btBulletCollisionCommon.h @@ -290,5 +294,8 @@ DESTINATION ${INCLUDE_INSTALL_DIR}/BulletCollision) SET_PROPERTY(SOURCE ${NarrowPhaseCollision_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/NarrowPhaseCollision) ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + + INSTALL(EXPORT BulletCollisionTargets + DESTINATION ${BULLET_CONFIG_CMAKE_PATH}) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ENDIF (INSTALL_LIBS) diff --git a/src/BulletDynamics/CMakeLists.txt b/src/BulletDynamics/CMakeLists.txt index 3332440f2..3bbce4389 100644 --- a/src/BulletDynamics/CMakeLists.txt +++ b/src/BulletDynamics/CMakeLists.txt @@ -147,11 +147,15 @@ 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 BulletDynamicsTargets + 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 BulletDynamicsTargets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) @@ -172,4 +176,7 @@ DESTINATION ${INCLUDE_INSTALL_DIR}/BulletDynamics) SET_PROPERTY(SOURCE ${MLCPSolvers_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/MLCPSolvers) ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) + + INSTALL(EXPORT BulletDynamicsTargets + DESTINATION ${BULLET_CONFIG_CMAKE_PATH}) ENDIF (INSTALL_LIBS) diff --git a/src/BulletInverseDynamics/CMakeLists.txt b/src/BulletInverseDynamics/CMakeLists.txt index 3331c27ea..86b4e54be 100644 --- a/src/BulletInverseDynamics/CMakeLists.txt +++ b/src/BulletInverseDynamics/CMakeLists.txt @@ -42,11 +42,15 @@ 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 BulletInverseDynamicsTargets + 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 BulletInverseDynamicsTargets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) INSTALL(FILES ../btBulletCollisionCommon.h @@ -62,5 +66,8 @@ DESTINATION ${INCLUDE_INSTALL_DIR}/BulletInverseDynamics) SET_PROPERTY(SOURCE ${BulletInverseDynamicsDetails_HDRS} PROPERTY MACOSX_PACKAGE_LOCATION Headers/details) ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + + INSTALL(EXPORT BulletInverseDynamicsTargets + DESTINATION ${BULLET_CONFIG_CMAKE_PATH}) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ENDIF (INSTALL_LIBS) diff --git a/src/BulletSoftBody/CMakeLists.txt b/src/BulletSoftBody/CMakeLists.txt index d43df1c67..6ba508ec5 100644 --- a/src/BulletSoftBody/CMakeLists.txt +++ b/src/BulletSoftBody/CMakeLists.txt @@ -50,11 +50,15 @@ 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 BulletSoftBodyTargets + 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 BulletSoftBodyTargets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib${LIB_SUFFIX} + ARCHIVE DESTINATION lib${LIB_SUFFIX}) INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE PATTERN "CMakeFiles" EXCLUDE) @@ -65,5 +69,8 @@ DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES FRAMEWORK true) SET_TARGET_PROPERTIES(BulletSoftBody PROPERTIES PUBLIC_HEADER "${BulletSoftBody_HDRS}") ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + + INSTALL(EXPORT BulletSoftBodyTargets + DESTINATION ${BULLET_CONFIG_CMAKE_PATH}) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ENDIF (INSTALL_LIBS) diff --git a/src/LinearMath/CMakeLists.txt b/src/LinearMath/CMakeLists.txt index 0c8c0133a..56d4b5bcc 100644 --- a/src/LinearMath/CMakeLists.txt +++ b/src/LinearMath/CMakeLists.txt @@ -59,9 +59,12 @@ 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 LinearMath DESTINATION .) + INSTALL(TARGETS LinearMath + EXPORT LinearMathTargets + DESTINATION .) ELSE (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) INSTALL(TARGETS LinearMath + EXPORT LinearMathTargets RUNTIME DESTINATION bin LIBRARY DESTINATION lib${LIB_SUFFIX} ARCHIVE DESTINATION lib${LIB_SUFFIX}) @@ -75,5 +78,8 @@ DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN SET_TARGET_PROPERTIES(LinearMath PROPERTIES FRAMEWORK true) SET_TARGET_PROPERTIES(LinearMath PROPERTIES PUBLIC_HEADER "${LinearMath_HDRS}") ENDIF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK) + + INSTALL(EXPORT LinearMathTargets + DESTINATION ${BULLET_CONFIG_CMAKE_PATH}) ENDIF (NOT INTERNAL_CREATE_DISTRIBUTABLE_MSVC_PROJECTFILES) ENDIF (INSTALL_LIBS)