here I attach a patch which contains the modifications to the build system of Bullet i did to use it from external projects, like OgreBullet.
List of changes:
-Added the configuration file bullet-config.cmake, which is installed into <prefix>/lib/cmake/Bullet: this way any other project wanting to link to Bullet just have to use FIND_PACKAGE in "Config mode" to easily retrieve the values of the BULLET_INCLUDE_DIR, BULLET_LIBRARY_DIR and BULLET_LIBRARIES and use them.
-Added the configuration file bullet-config-version.cmake which allow the usage of the above mentioned configuration file only when the requested version matches exactly the one available.
-Modified all the INSTALL(DIRECTORY) rules to prevent to accidentaly create any CMakeFiles directory (and any of its subdirectories) in the installation directory during installation.
-Added the installation the following Extras libraries: BulletColladaConverter, COLLADA_DOM, ConvexDecomposition, GIMPACTUtils, glui, LibXML.
I hope this patch could be useful to others, or even included in the mainstream sources of Bullet.
Greetings,
Luca
p.s. Since attaching a .txt or a .diff file is not allowed, i paste the patch in here:
Code: Select all
diff -Naur ../bullet2.74ORIG/bullet-config.cmake.in ./bullet-config.cmake.in
--- ../bullet2.74ORIG/bullet-config.cmake.in 1970-01-01 01:00:00.000000000 +0100
+++ ./bullet-config.cmake.in 2009-04-19 12:22:23.000000000 +0200
@@ -0,0 +1,8 @@
+SET (BULLET_INCLUDE_DIR
+ ${CMAKE_INSTALL_PREFIX}/include/)
+SET (BULLET_LIBRARY_DIR
+ ${CMAKE_INSTALL_PREFIX}/lib/)
+SET (BULLET_LIBRARIES
+ bulletdynamics
+ bulletcollision
+ bulletmath)
diff -Naur ../bullet2.74ORIG/bullet-config-version.cmake ./bullet-config-version.cmake
--- ../bullet2.74ORIG/bullet-config-version.cmake 1970-01-01 01:00:00.000000000 +0100
+++ ./bullet-config-version.cmake 2009-04-19 17:50:31.000000000 +0200
@@ -0,0 +1,8 @@
+IF (${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR} EQUAL 2.74)
+ SET (PACKAGE_VERSION_EXACT TRUE)
+ SET (PACKAGE_VERSION_COMPATIBLE TRUE)
+ SET (PACKAGE_VERSION_UNSUITABLE FALSE)
+ELSE (${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR} EQUAL 2.74)
+ SET (PACKAGE_VERSION_COMPATIBLE FALSE)
+ SET (PACKAGE_VERSION_UNSUITABLE TRUE)
+ENDIF (${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR} EQUAL 2.74)
diff -Naur ../bullet2.74ORIG/CMakeLists.txt ./CMakeLists.txt
--- ../bullet2.74ORIG/CMakeLists.txt 2009-02-18 23:52:03.000000000 +0100
+++ ./CMakeLists.txt 2009-04-19 17:02:14.000000000 +0200
@@ -69,3 +69,15 @@
ENDIF(BUILD_EXTRAS)
SUBDIRS(src)
+
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ #
+ # Create the configuration file to let other projects to link to Bullet.
+ CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/bullet-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/bullet-config.cmake)
+ INSTALL(
+ FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/bullet-config.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/bullet-config-version.cmake
+ DESTINATION
+ lib/cmake/Bullet/)
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/BulletColladaConverter/CMakeLists.txt ./Extras/BulletColladaConverter/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/BulletColladaConverter/CMakeLists.txt 2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/BulletColladaConverter/CMakeLists.txt 2009-05-25 22:33:33.000000000 +0200
@@ -10,3 +10,11 @@
IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(BulletColladaConverter ColladaDom BulletCollision BulletDynamics)
ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS BulletColladaConverter DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/COLLADA_DOM/CMakeLists.txt ./Extras/COLLADA_DOM/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/COLLADA_DOM/CMakeLists.txt 2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/COLLADA_DOM/CMakeLists.txt 2009-05-25 19:26:30.000000000 +0200
@@ -211,3 +211,11 @@
IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(ColladaDom XML)
ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS ColladaDom DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/ConvexDecomposition/CMakeLists.txt ./Extras/ConvexDecomposition/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/ConvexDecomposition/CMakeLists.txt 2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/ConvexDecomposition/CMakeLists.txt 2009-05-25 19:27:47.000000000 +0200
@@ -13,3 +13,11 @@
IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(ConvexDecomposition BulletCollision LinearMath)
ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS ConvexDecomposition DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/GIMPACTUtils/CMakeLists.txt ./Extras/GIMPACTUtils/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/GIMPACTUtils/CMakeLists.txt 2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/GIMPACTUtils/CMakeLists.txt 2009-05-25 19:25:59.000000000 +0200
@@ -12,3 +12,11 @@
IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(GIMPACTUtils ConvexDecomposition BulletCollision)
ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS GIMPACTUtils DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/glui/CMakeLists.txt ./Extras/glui/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/glui/CMakeLists.txt 2008-11-06 07:54:35.000000000 +0100
+++ ./Extras/glui/CMakeLists.txt 2009-05-25 22:31:02.000000000 +0200
@@ -64,3 +64,11 @@
IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(GLUI ${GLUT_glut_LIBRARY} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY})
ENDIF (BUILD_SHARED_LIBS)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS GLUI DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/iff/CMakeLists.txt ./Extras/iff/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/iff/CMakeLists.txt 2009-01-14 02:18:41.000000000 +0100
+++ ./Extras/iff/CMakeLists.txt 2009-05-25 22:30:48.000000000 +0200
@@ -9,3 +9,11 @@
)
#SUBDIRS( BulletIffConverter )
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS Iff DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/Extras/LibXML/CMakeLists.txt ./Extras/LibXML/CMakeLists.txt
--- ../bullet2.74ORIG/Extras/LibXML/CMakeLists.txt 2008-11-10 21:33:14.000000000 +0100
+++ ./Extras/LibXML/CMakeLists.txt 2009-05-25 22:52:07.000000000 +0200
@@ -55,3 +55,11 @@
xpath.c
xpointer.c
)
+
+#FILES_MATCHING requires CMake 2.6
+IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
+ INSTALL(TARGETS XML DESTINATION lib)
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
+ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
diff -Naur ../bullet2.74ORIG/src/BulletCollision/CMakeLists.txt ./src/BulletCollision/CMakeLists.txt
--- ../bullet2.74ORIG/src/BulletCollision/CMakeLists.txt 2009-02-18 23:52:03.000000000 +0100
+++ ./src/BulletCollision/CMakeLists.txt 2009-05-25 22:34:51.000000000 +0200
@@ -217,7 +217,9 @@
#INSTALL of other files requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
INSTALL(TARGETS BulletCollision DESTINATION lib)
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff -Naur ../bullet2.74ORIG/src/BulletDynamics/CMakeLists.txt ./src/BulletDynamics/CMakeLists.txt
--- ../bullet2.74ORIG/src/BulletDynamics/CMakeLists.txt 2009-02-18 23:52:03.000000000 +0100
+++ ./src/BulletDynamics/CMakeLists.txt 2009-05-25 22:41:43.000000000 +0200
@@ -77,7 +77,9 @@
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
INSTALL(TARGETS BulletDynamics DESTINATION lib)
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff -Naur ../bullet2.74ORIG/src/BulletSoftBody/CMakeLists.txt ./src/BulletSoftBody/CMakeLists.txt
--- ../bullet2.74ORIG/src/BulletSoftBody/CMakeLists.txt 2009-02-18 23:52:03.000000000 +0100
+++ ./src/BulletSoftBody/CMakeLists.txt 2009-05-25 22:51:34.000000000 +0200
@@ -34,7 +34,9 @@
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
INSTALL(TARGETS BulletSoftBody DESTINATION lib)
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)
diff -Naur ../bullet2.74ORIG/src/LinearMath/CMakeLists.txt ./src/LinearMath/CMakeLists.txt
--- ../bullet2.74ORIG/src/LinearMath/CMakeLists.txt 2009-02-18 23:52:03.000000000 +0100
+++ ./src/LinearMath/CMakeLists.txt 2009-05-25 22:56:58.000000000 +0200
@@ -42,7 +42,9 @@
#FILES_MATCHING requires CMake 2.6
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
INSTALL(TARGETS LinearMath DESTINATION lib)
- INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING PATTERN "*.h")
+ INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DESTINATION include FILES_MATCHING
+ PATTERN "CMake*" EXCLUDE #To prevent the creation of CMakeFile directories.
+ PATTERN "*.h")
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 2.5)
IF (APPLE AND BUILD_SHARED_LIBS AND FRAMEWORK)