CMakeLists.txt 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. set(BOX2D_Collision_SRCS
  2. Collision/b2BroadPhase.cpp
  3. Collision/b2CollideCircle.cpp
  4. Collision/b2CollideEdge.cpp
  5. Collision/b2CollidePolygon.cpp
  6. Collision/b2Collision.cpp
  7. Collision/b2Distance.cpp
  8. Collision/b2DynamicTree.cpp
  9. Collision/b2TimeOfImpact.cpp
  10. )
  11. set(BOX2D_Collision_HDRS
  12. Collision/b2BroadPhase.h
  13. Collision/b2Collision.h
  14. Collision/b2Distance.h
  15. Collision/b2DynamicTree.h
  16. Collision/b2TimeOfImpact.h
  17. )
  18. set(BOX2D_Shapes_SRCS
  19. Collision/Shapes/b2CircleShape.cpp
  20. Collision/Shapes/b2EdgeShape.cpp
  21. Collision/Shapes/b2ChainShape.cpp
  22. Collision/Shapes/b2PolygonShape.cpp
  23. )
  24. set(BOX2D_Shapes_HDRS
  25. Collision/Shapes/b2CircleShape.h
  26. Collision/Shapes/b2EdgeShape.h
  27. Collision/Shapes/b2ChainShape.h
  28. Collision/Shapes/b2PolygonShape.h
  29. Collision/Shapes/b2Shape.h
  30. )
  31. set(BOX2D_Common_SRCS
  32. Common/b2BlockAllocator.cpp
  33. Common/b2Draw.cpp
  34. Common/b2Math.cpp
  35. Common/b2Settings.cpp
  36. Common/b2StackAllocator.cpp
  37. Common/b2Timer.cpp
  38. )
  39. set(BOX2D_Common_HDRS
  40. Common/b2BlockAllocator.h
  41. Common/b2Draw.h
  42. Common/b2GrowableStack.h
  43. Common/b2Math.h
  44. Common/b2Settings.h
  45. Common/b2StackAllocator.h
  46. Common/b2Timer.h
  47. )
  48. set(BOX2D_Dynamics_SRCS
  49. Dynamics/b2Body.cpp
  50. Dynamics/b2ContactManager.cpp
  51. Dynamics/b2Fixture.cpp
  52. Dynamics/b2Island.cpp
  53. Dynamics/b2World.cpp
  54. Dynamics/b2WorldCallbacks.cpp
  55. )
  56. set(BOX2D_Dynamics_HDRS
  57. Dynamics/b2Body.h
  58. Dynamics/b2ContactManager.h
  59. Dynamics/b2Fixture.h
  60. Dynamics/b2Island.h
  61. Dynamics/b2TimeStep.h
  62. Dynamics/b2World.h
  63. Dynamics/b2WorldCallbacks.h
  64. )
  65. set(BOX2D_Contacts_SRCS
  66. Dynamics/Contacts/b2CircleContact.cpp
  67. Dynamics/Contacts/b2Contact.cpp
  68. Dynamics/Contacts/b2ContactSolver.cpp
  69. Dynamics/Contacts/b2PolygonAndCircleContact.cpp
  70. Dynamics/Contacts/b2EdgeAndCircleContact.cpp
  71. Dynamics/Contacts/b2EdgeAndPolygonContact.cpp
  72. Dynamics/Contacts/b2ChainAndCircleContact.cpp
  73. Dynamics/Contacts/b2ChainAndPolygonContact.cpp
  74. Dynamics/Contacts/b2PolygonContact.cpp
  75. )
  76. set(BOX2D_Contacts_HDRS
  77. Dynamics/Contacts/b2CircleContact.h
  78. Dynamics/Contacts/b2Contact.h
  79. Dynamics/Contacts/b2ContactSolver.h
  80. Dynamics/Contacts/b2PolygonAndCircleContact.h
  81. Dynamics/Contacts/b2EdgeAndCircleContact.h
  82. Dynamics/Contacts/b2EdgeAndPolygonContact.h
  83. Dynamics/Contacts/b2ChainAndCircleContact.h
  84. Dynamics/Contacts/b2ChainAndPolygonContact.h
  85. Dynamics/Contacts/b2PolygonContact.h
  86. )
  87. set(BOX2D_Joints_SRCS
  88. Dynamics/Joints/b2DistanceJoint.cpp
  89. Dynamics/Joints/b2FrictionJoint.cpp
  90. Dynamics/Joints/b2GearJoint.cpp
  91. Dynamics/Joints/b2Joint.cpp
  92. Dynamics/Joints/b2MotorJoint.cpp
  93. Dynamics/Joints/b2MouseJoint.cpp
  94. Dynamics/Joints/b2PrismaticJoint.cpp
  95. Dynamics/Joints/b2PulleyJoint.cpp
  96. Dynamics/Joints/b2RevoluteJoint.cpp
  97. Dynamics/Joints/b2RopeJoint.cpp
  98. Dynamics/Joints/b2WeldJoint.cpp
  99. Dynamics/Joints/b2WheelJoint.cpp
  100. )
  101. set(BOX2D_Joints_HDRS
  102. Dynamics/Joints/b2DistanceJoint.h
  103. Dynamics/Joints/b2FrictionJoint.h
  104. Dynamics/Joints/b2GearJoint.h
  105. Dynamics/Joints/b2Joint.h
  106. Dynamics/Joints/b2MotorJoint.h
  107. Dynamics/Joints/b2MouseJoint.h
  108. Dynamics/Joints/b2PrismaticJoint.h
  109. Dynamics/Joints/b2PulleyJoint.h
  110. Dynamics/Joints/b2RevoluteJoint.h
  111. Dynamics/Joints/b2RopeJoint.h
  112. Dynamics/Joints/b2WeldJoint.h
  113. Dynamics/Joints/b2WheelJoint.h
  114. )
  115. set(BOX2D_Rope_SRCS
  116. Rope/b2Rope.cpp
  117. )
  118. set(BOX2D_Rope_HDRS
  119. Rope/b2Rope.h
  120. )
  121. set(BOX2D_General_HDRS
  122. Box2D.h
  123. )
  124. include_directories( ../ )
  125. if(BOX2D_BUILD_SHARED)
  126. add_library(Box2D_shared SHARED
  127. ${BOX2D_General_HDRS}
  128. ${BOX2D_Joints_SRCS}
  129. ${BOX2D_Joints_HDRS}
  130. ${BOX2D_Contacts_SRCS}
  131. ${BOX2D_Contacts_HDRS}
  132. ${BOX2D_Dynamics_SRCS}
  133. ${BOX2D_Dynamics_HDRS}
  134. ${BOX2D_Common_SRCS}
  135. ${BOX2D_Common_HDRS}
  136. ${BOX2D_Shapes_SRCS}
  137. ${BOX2D_Shapes_HDRS}
  138. ${BOX2D_Collision_SRCS}
  139. ${BOX2D_Collision_HDRS}
  140. ${BOX2D_Rope_SRCS}
  141. ${BOX2D_Rope_HDRS}
  142. )
  143. set_target_properties(Box2D_shared PROPERTIES
  144. OUTPUT_NAME "Box2D"
  145. CLEAN_DIRECT_OUTPUT 1
  146. VERSION ${BOX2D_VERSION}
  147. )
  148. endif()
  149. if(BOX2D_BUILD_STATIC)
  150. add_library(Box2D STATIC
  151. ${BOX2D_General_HDRS}
  152. ${BOX2D_Joints_SRCS}
  153. ${BOX2D_Joints_HDRS}
  154. ${BOX2D_Contacts_SRCS}
  155. ${BOX2D_Contacts_HDRS}
  156. ${BOX2D_Dynamics_SRCS}
  157. ${BOX2D_Dynamics_HDRS}
  158. ${BOX2D_Common_SRCS}
  159. ${BOX2D_Common_HDRS}
  160. ${BOX2D_Shapes_SRCS}
  161. ${BOX2D_Shapes_HDRS}
  162. ${BOX2D_Collision_SRCS}
  163. ${BOX2D_Collision_HDRS}
  164. ${BOX2D_Rope_SRCS}
  165. ${BOX2D_Rope_HDRS}
  166. )
  167. set_target_properties(Box2D PROPERTIES
  168. CLEAN_DIRECT_OUTPUT 1
  169. VERSION ${BOX2D_VERSION}
  170. )
  171. endif()
  172. # These are used to create visual studio folders.
  173. source_group(Collision FILES ${BOX2D_Collision_SRCS} ${BOX2D_Collision_HDRS})
  174. source_group(Collision\\Shapes FILES ${BOX2D_Shapes_SRCS} ${BOX2D_Shapes_HDRS})
  175. source_group(Common FILES ${BOX2D_Common_SRCS} ${BOX2D_Common_HDRS})
  176. source_group(Dynamics FILES ${BOX2D_Dynamics_SRCS} ${BOX2D_Dynamics_HDRS})
  177. source_group(Dynamics\\Contacts FILES ${BOX2D_Contacts_SRCS} ${BOX2D_Contacts_HDRS})
  178. source_group(Dynamics\\Joints FILES ${BOX2D_Joints_SRCS} ${BOX2D_Joints_HDRS})
  179. source_group(Include FILES ${BOX2D_General_HDRS})
  180. source_group(Rope FILES ${BOX2D_Rope_SRCS} ${BOX2D_Rope_HDRS})
  181. if(BOX2D_INSTALL)
  182. # install headers
  183. install(FILES ${BOX2D_General_HDRS} DESTINATION include/Box2D)
  184. install(FILES ${BOX2D_Collision_HDRS} DESTINATION include/Box2D/Collision)
  185. install(FILES ${BOX2D_Shapes_HDRS} DESTINATION include/Box2D/Collision/Shapes)
  186. install(FILES ${BOX2D_Common_HDRS} DESTINATION include/Box2D/Common)
  187. install(FILES ${BOX2D_Dynamics_HDRS} DESTINATION include/Box2D/Dynamics)
  188. install(FILES ${BOX2D_Contacts_HDRS} DESTINATION include/Box2D/Dynamics/Contacts)
  189. install(FILES ${BOX2D_Joints_HDRS} DESTINATION include/Box2D/Dynamics/Joints)
  190. install(FILES ${BOX2D_Rope_HDRS} DESTINATION include/Box2D/Rope)
  191. # install libraries
  192. if(BOX2D_BUILD_SHARED)
  193. install(TARGETS Box2D_shared EXPORT Box2D-targets
  194. LIBRARY DESTINATION ${LIB_INSTALL_DIR}
  195. ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
  196. RUNTIME DESTINATION bin)
  197. endif()
  198. if(BOX2D_BUILD_STATIC)
  199. install(TARGETS Box2D EXPORT Box2D-targets DESTINATION ${LIB_INSTALL_DIR})
  200. endif()
  201. # install build system hooks for third-party apps
  202. install(EXPORT Box2D-targets DESTINATION ${LIB_INSTALL_DIR}/Box2D)
  203. set (BOX2D_INCLUDE_DIR ${CMAKE_INSTALL_PREFIX}/include)
  204. set (BOX2D_INCLUDE_DIRS ${BOX2D_INCLUDE_DIR} )
  205. set (BOX2D_LIBRARY_DIRS ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR})
  206. set (BOX2D_LIBRARY Box2D)
  207. set (BOX2D_LIBRARIES ${BOX2D_LIBRARY})
  208. set (BOX2D_USE_FILE ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/cmake/Box2D/UseBox2D.cmake)
  209. configure_file(Box2DConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/Box2DConfig.cmake @ONLY ESCAPE_QUOTES)
  210. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Box2DConfig.cmake UseBox2D.cmake DESTINATION ${LIB_INSTALL_DIR}/cmake/Box2D)
  211. endif(BOX2D_INSTALL)