Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.34 KB | None | 0 0
  1. # Based on a file from the Ogre Wiki Tutorial Framework
  2. # http://www.ogre3d.org/tikiwiki/
  3. #
  4. # Modified as part of the Thrive project
  5. #-----------------------------------------------------------------------------
  6.  
  7. cmake_minimum_required(VERSION 2.6)
  8.  
  9. project(Thrive)
  10.  
  11.  
  12.  
  13. ###################
  14. # Cache Variables #
  15. ###################
  16.  
  17. # Ogre SDK
  18. SET(OGRE_SDK ""
  19. CACHE STRING "Path to the Ogre SDK"
  20. )
  21.  
  22. set(ASSET_DIRECTORY "${CMAKE_SOURCE_DIR}/assets"
  23. CACHE PATH "Path to assets"
  24. )
  25.  
  26. if(NOT IS_DIRECTORY "${ASSET_DIRECTORY}/models")
  27. message(FATAL_ERROR
  28. "Could not find assets in ${ASSET_DIRECTORY}.
  29. Please use Subversion to download the assets:
  30. svn co http://crovea.net/svn/thrive_assets/ ${ASSET_DIRECTORY}
  31. Use 'thrive' for the username and password
  32. "
  33. )
  34. endif()
  35.  
  36.  
  37. ###############
  38. # CMake Setup #
  39. ###############
  40.  
  41. # Configure search path for cmake modules
  42. list(APPEND CMAKE_MODULE_PATH
  43. "${CMAKE_SOURCE_DIR}/cmake_modules"
  44. )
  45.  
  46. # Import utility functions
  47. include(add_to_project)
  48. include(utils)
  49.  
  50. # Search path for dynamic libraries at runtime. Only relevant for Linux.
  51. set(CMAKE_INSTALL_RPATH ".")
  52.  
  53. # Assure a proper build type
  54. if (NOT CMAKE_BUILD_TYPE)
  55. set(CMAKE_BUILD_TYPE
  56. "Debug"
  57. CACHE STRING "Choose the type of build, options are: None (CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo."
  58. FORCE
  59. )
  60. endif ()
  61.  
  62. # Install into dist subdirectory
  63. set(CMAKE_INSTALL_PREFIX
  64. "${CMAKE_CURRENT_BINARY_DIR}/dist"
  65. CACHE STRING "Install path" FORCE
  66. )
  67.  
  68.  
  69. #############
  70. # Find OGRE #
  71. #############
  72.  
  73. find_package(OGRE REQUIRED)
  74.  
  75. # OGRE Plugins used
  76. set(OGRE_PLUGINS
  77. # Plugin_BSPSceneManager
  78. # Plugin_OctreeSceneManager
  79. # Plugin_OctreeZone
  80. Plugin_ParticleFX
  81. # Plugin_PCZSceneManager
  82. RenderSystem_GL
  83. )
  84.  
  85.  
  86. #######
  87. # OIS #
  88. #######
  89.  
  90. find_package(OIS REQUIRED QUIET)
  91.  
  92.  
  93. ##############
  94. # Find Boost #
  95. ##############
  96.  
  97. set(BOOST_COMPONENTS
  98. chrono
  99. date_time
  100. filesystem
  101. thread
  102. system
  103. )
  104.  
  105. find_package(Boost COMPONENTS ${BOOST_COMPONENTS} REQUIRED QUIET)
  106.  
  107. ###############
  108. # Google Test #
  109. ###############
  110.  
  111. add_subdirectory(
  112. "${CMAKE_CURRENT_SOURCE_DIR}/contrib/googletest"
  113. )
  114.  
  115. include_directories(
  116. SYSTEM
  117. "${CMAKE_CURRENT_SOURCE_DIR}/contrib/googletest/include"
  118. )
  119.  
  120. ##########
  121. # Bullet #
  122. ##########
  123.  
  124. find_package(Bullet REQUIRED QUIET)
  125.  
  126. include_directories(SYSTEM ${BULLET_INCLUDE_DIRS})
  127.  
  128. ##########
  129. # TinyXML #
  130. ##########
  131.  
  132. find_package(TinyXML REQUIRED QUIET)
  133.  
  134. #######
  135. # Lua #
  136. #######
  137.  
  138. include_directories(
  139. SYSTEM
  140. "${CMAKE_CURRENT_SOURCE_DIR}/contrib/lua/lua/src"
  141. "${CMAKE_CURRENT_SOURCE_DIR}/contrib/luabind/"
  142. )
  143.  
  144. #######
  145. # CEGUI #
  146. #######
  147.  
  148. set(FIND_CEGUI_VERSION 9999)
  149.  
  150. message(STATUS "Finding CEGUI version " ${FIND_CEGUI_VERSION}
  151. " for Ogre version " ${OGRE_VERSION})
  152.  
  153. find_package(CEGUI REQUIRED QUIET COMPONENTS OGRE)
  154.  
  155.  
  156. #set(CEGUI_INCLUDE_DIR
  157. include_directories(SYSTEM ${CEGUI_INCLUDE_DIR})
  158.  
  159.  
  160. #######
  161. # TinyXML #
  162. #######
  163.  
  164. find_package(TinyXML REQUIRED QUIET)
  165.  
  166. include_directories(SYSTEM ${TINYXML_INCLUDE_DIR})
  167.  
  168. if(WIN32)
  169. add_definitions(-DLUA_BUILD_AS_DLL)
  170. endif()
  171.  
  172. add_subdirectory(
  173. "${CMAKE_CURRENT_SOURCE_DIR}/contrib/lua/"
  174. )
  175.  
  176. set(LUA_FOUND TRUE)
  177. set(LUA_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/contrib/lua/lua/src")
  178. set(LUA_LIBRARIES lua)
  179. #set(BUILD_SHARED_LUABIND ON)
  180. #set(INSTALL_LUABIND ON)
  181. set(LIB_DIR bin)
  182. add_definitions(-DLUABIND_CPLUSPLUS_LUA)
  183.  
  184. add_subdirectory(
  185. "${CMAKE_CURRENT_SOURCE_DIR}/contrib/luabind/"
  186. )
  187.  
  188. ################
  189. # cAudio #
  190. ################
  191.  
  192. find_package(cAudio)
  193. find_package(OpenAL QUIET)
  194.  
  195. include_directories("${cAudio_INCLUDE_DIRS}")
  196.  
  197. ################
  198. # Ogre FFMPEG #
  199. ################
  200. find_package(FFMPEG)
  201. find_package(OgreFFMPEG)
  202. include_directories("${OgreFFMPEG_INCLUDE_DIR}")
  203.  
  204. ######################
  205. # Configure Compiler #
  206. ######################
  207.  
  208. include_directories(SYSTEM
  209. ${Boost_INCLUDE_DIRS}
  210. ${OIS_INCLUDE_DIRS}
  211. ${OGRE_INCLUDE_DIRS}
  212. )
  213.  
  214. include_directories(
  215. "${CMAKE_CURRENT_SOURCE_DIR}/src"
  216. )
  217.  
  218. # Compile using c++11 and using sse2
  219. #no-unused-variable is necessary to supress werror while compiling cAudio
  220. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -msse2 -Wno-unused-function")
  221.  
  222.  
  223. find_package(Threads)
  224.  
  225. ##################
  226. # Compile Thrive #
  227. ##################
  228.  
  229. # Collect sources from sub directories
  230. add_subdirectory(src)
  231. get_property(SOURCE_FILES GLOBAL PROPERTY SOURCE_FILES)
  232.  
  233. # Set extensive warning flags
  234. include(compiler_flags)
  235. set_source_files_properties(
  236. ${SOURCE_FILES}
  237. PROPERTIES COMPILE_FLAGS ${WARNING_FLAGS}
  238. )
  239.  
  240. # Compile library
  241. add_library(ThriveLib STATIC ${SOURCE_FILES})
  242.  
  243. target_link_libraries(ThriveLib
  244. ${Boost_LIBRARIES}
  245. ${OGRE_LIBRARIES}
  246. ${OIS_LIBRARIES}
  247. ${CMAKE_THREAD_LIBS_INIT}
  248. ${BULLET_DYNAMICS_LIBRARY_DEBUG}
  249. ${BULLET_COLLISION_LIBRARY_DEBUG}
  250. ${BULLET_MATH_LIBRARY_DEBUG}
  251. ${BULLET_SOFTBODY_LIBRARY_DEBUG}
  252. ${CEGUI_LIBRARY}
  253. ${TINYXML_LIBRARIES}
  254. ${OpenAL_LIBRARIES}
  255. ${OgreFFMPEG_LIBRARIES}
  256. ${FFMPEG_LIBRARIES}
  257. luabind
  258. )
  259.  
  260.  
  261.  
  262. target_link_libraries(ThriveLib
  263. ${cAudio_LIBRARIES}
  264. )
  265.  
  266.  
  267. set_target_properties(ThriveLib PROPERTIES
  268. OUTPUT_NAME Thrive
  269. )
  270.  
  271. # Compile executable
  272. add_executable(Thrive
  273. #WIN32
  274. ${CMAKE_CURRENT_SOURCE_DIR}/src/Main.cpp)
  275.  
  276. target_link_libraries(Thrive ThriveLib)
  277.  
  278. #################
  279. # Compile tests #
  280. #################
  281.  
  282. # Collect sources from sub directories
  283. get_property(TEST_SOURCE_FILES GLOBAL PROPERTY TEST_SOURCE_FILES)
  284.  
  285. set_source_files_properties(
  286. ${TEST_SOURCE_FILES}
  287. PROPERTIES COMPILE_FLAGS ${WARNING_FLAGS}
  288. )
  289.  
  290. add_executable(RunTests ${TEST_SOURCE_FILES})
  291. target_link_libraries(RunTests ThriveLib gtest_main)
  292.  
  293. #################
  294. # Documentation #
  295. #################
  296.  
  297. set(DOC_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/doc" CACHE PATH "Documentation output directory.")
  298. set(DOC_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/doc")
  299.  
  300. set( DOXYGEN_CONFIG_FILE
  301. "${CMAKE_CURRENT_SOURCE_DIR}/doc/doxygen.cfg.in"
  302. )
  303.  
  304. find_package(Doxygen)
  305.  
  306. if(DOXYGEN_FOUND)
  307. configure_file("${DOXYGEN_CONFIG_FILE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg" @ONLY)
  308. add_custom_target(doc
  309. "${DOXYGEN_EXECUTABLE}" "${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg"
  310. WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc"
  311. COMMENT "Generating API documentation with Doxygen" VERBATIM
  312. SOURCES "${DOXYGEN_CONFIG_FILE}"
  313. )
  314. endif()
  315.  
  316.  
  317. ###########
  318. # Install #
  319. ###########
  320.  
  321. # Executable
  322. install(TARGETS Thrive
  323. RUNTIME DESTINATION bin
  324. LIBRARY DESTINATION bin
  325. )
  326.  
  327. install(EXPORT lua
  328. DESTINATION bin
  329. )
  330.  
  331. # Version file
  332.  
  333. install(FILES
  334. "${CMAKE_SOURCE_DIR}/thriveversion.ver"
  335. DESTINATION bin
  336. )
  337.  
  338. # OGRE config and media
  339.  
  340. install(FILES
  341. "${CMAKE_SOURCE_DIR}/ogre_cfg/resources.cfg"
  342. DESTINATION bin
  343. )
  344.  
  345. install(FILES
  346. "${CMAKE_SOURCE_DIR}/ogre_cfg/plugins.cfg"
  347. DESTINATION bin
  348. CONFIGURATIONS Release
  349. )
  350.  
  351. install(FILES
  352. "${CMAKE_SOURCE_DIR}/ogre_cfg/plugins_d.cfg"
  353. DESTINATION bin
  354. CONFIGURATIONS Debug
  355. RENAME plugins.cfg
  356. )
  357.  
  358. install(DIRECTORY "${ASSET_DIRECTORY}/models"
  359. DESTINATION ./
  360. CONFIGURATIONS Release Debug
  361. FILES_MATCHING
  362. PATTERN "*.mesh"
  363. PATTERN "*.mesh.xml"
  364. PATTERN "*.skeleton"
  365. PATTERN "*.skeleton.xml"
  366. )
  367.  
  368. install(DIRECTORY "${ASSET_DIRECTORY}/materials"
  369. DESTINATION ./
  370. CONFIGURATIONS Release Debug
  371. FILES_MATCHING
  372. PATTERN "*.jpg"
  373. PATTERN "*.jpeg"
  374. PATTERN "*.material"
  375. PATTERN "*.png"
  376. )
  377.  
  378. install(DIRECTORY
  379. "${ASSET_DIRECTORY}/fonts"
  380. DESTINATION ./
  381. CONFIGURATIONS Release Debug
  382. FILES_MATCHING
  383. PATTERN "*.ttf"
  384. PATTERN "*.fontdef"
  385. PATTERN "*.font"
  386. )
  387.  
  388. install(DIRECTORY
  389. "${CMAKE_SOURCE_DIR}/scripts"
  390. DESTINATION ./
  391. CONFIGURATIONS Release Debug
  392. )
  393.  
  394. install(DIRECTORY
  395. "${ASSET_DIRECTORY}/gui/imagesets"
  396. DESTINATION ./gui/
  397. CONFIGURATIONS Release Debug
  398. FILES_MATCHING
  399. PATTERN "*.imageset"
  400. PATTERN "*.jpg"
  401. PATTERN "*.png"
  402. )
  403.  
  404. install(DIRECTORY
  405. "${ASSET_DIRECTORY}/gui/animations"
  406. DESTINATION ./gui/
  407. CONFIGURATIONS Release Debug
  408. FILES_MATCHING
  409. PATTERN "*.anims"
  410. )
  411.  
  412. install(DIRECTORY
  413. "${ASSET_DIRECTORY}/gui/layouts"
  414. DESTINATION ./gui/
  415. CONFIGURATIONS Release Debug
  416. FILES_MATCHING
  417. PATTERN "*.layout"
  418. PATTERN "*.wnd"
  419. )
  420. install(DIRECTORY
  421. "${ASSET_DIRECTORY}/gui/looknfeel"
  422. DESTINATION ./gui/
  423. CONFIGURATIONS Release Debug
  424. FILES_MATCHING
  425. PATTERN "*.looknfeel"
  426. )
  427. install(DIRECTORY
  428. "${ASSET_DIRECTORY}/gui/schemes"
  429. DESTINATION ./gui/
  430. CONFIGURATIONS Release Debug
  431. FILES_MATCHING
  432. PATTERN "*.scheme"
  433. )
  434.  
  435. install(DIRECTORY
  436. "${ASSET_DIRECTORY}/sounds"
  437. DESTINATION ./
  438. CONFIGURATIONS Release Debug
  439. FILES_MATCHING
  440. PATTERN "*.ogg"
  441. PATTERN "*.wav"
  442. )
  443.  
  444. install(DIRECTORY
  445. "${ASSET_DIRECTORY}/definitions"
  446. DESTINATION ./
  447. CONFIGURATIONS Release Debug
  448. FILES_MATCHING
  449. PATTERN "*.xml"
  450. )
  451.  
  452. # Install Runtime Libraries
  453. if(WIN32)
  454.  
  455. if (SYSTEM_DLLS)
  456. INSTALL(FILES
  457. ${SYSTEM_DLLS}
  458. DESTINATION bin
  459. )
  460. endif()
  461.  
  462. INSTALL(FILES
  463. ${Boost_LIBRARIES}
  464. DESTINATION bin
  465. )
  466.  
  467. # INSTALL(FILES
  468. # ${IRRKLANG_LIBRARIES_DLL}
  469. # DESTINATION bin
  470. # )
  471.  
  472. foreach(OGRE_PLUGIN ${OGRE_PLUGINS})
  473. # Release
  474. install(FILES
  475. "${OGRE_PLUGIN_DIR_REL}/${OGRE_PLUGIN}.dll"
  476. DESTINATION bin
  477. CONFIGURATIONS Release
  478. )
  479. # Debug
  480. install(FILES
  481. "${OGRE_PLUGIN_DIR_DBG}/${OGRE_PLUGIN}_d.dll"
  482. DESTINATION bin
  483. CONFIGURATIONS Debug
  484. )
  485. endforeach()
  486.  
  487. install(FILES
  488. "${OGRE_PLUGIN_DIR_REL}/OgreMain.dll"
  489. "${OGRE_PLUGIN_DIR_REL}/RenderSystem_GL.dll"
  490. "${OGRE_PLUGIN_DIR_REL}/OIS.dll"
  491. #"${OGRE_PLUGIN_DIR_REL}/cg.dll"
  492. DESTINATION bin
  493. CONFIGURATIONS Release
  494. )
  495.  
  496. install(FILES
  497. "${OGRE_PLUGIN_DIR_DBG}/OgreMain_d.dll"
  498. "${OGRE_PLUGIN_DIR_DBG}/RenderSystem_GL_d.dll"
  499. "${OGRE_PLUGIN_DIR_DBG}/OIS_d.dll"
  500. #"${OGRE_PLUGIN_DIR_DBG}/cg.dll"
  501. DESTINATION bin
  502. CONFIGURATIONS Debug
  503. )
  504.  
  505. install(FILES
  506. "${MINGW_ENV}/install/bin/libCEGUIBase-${FIND_CEGUI_VERSION}_d.dll"
  507. "${MINGW_ENV}/install/bin/libCEGUIOgreRenderer-${FIND_CEGUI_VERSION}_d.dll"
  508. "${MINGW_ENV}/install/bin/libCEGUITinyXMLParser_d.dll"
  509. "${MINGW_ENV}/install/bin/libCEGUICoreWindowRendererSet_d.dll"
  510. "${MINGW_ENV}/install/bin/Debug/libfreetype_d.dll"
  511. "${MINGW_ENV}/install/bin/Debug/libjpeg_d.dll"
  512. "${MINGW_ENV}/install/bin/Debug/libSILLY_d.dll"
  513. "${MINGW_ENV}/install/bin/Debug/libzlib_d.dll"
  514. "${MINGW_ENV}/install/bin/libcAudio_d.dll"
  515. "${MINGW_ENV}/install/bin/libcAudio.dll"
  516. "${MINGW_ENV}/install/bin/wrap_oal.dll"
  517. "${MINGW_ENV}/install/bin/OpenAL32.dll"
  518. DESTINATION bin
  519. CONFIGURATIONS Debug
  520. )
  521.  
  522. install(FILES
  523. "${MINGW_ENV}/install/bin/libCEGUIBase-${FIND_CEGUI_VERSION}.dll"
  524. "${MINGW_ENV}/install/bin/libCEGUIOgreRenderer-${FIND_CEGUI_VERSION}.dll"
  525. "${MINGW_ENV}/install/bin/libCEGUITinyXMLParser.dll"
  526. "${MINGW_ENV}/install/bin/libCEGUICoreWindowRendererSet.dll"
  527. "${MINGW_ENV}/install/bin/Release/libfreetype.dll"
  528. "${MINGW_ENV}/install/bin/Release/libjpeg.dll"
  529. "${MINGW_ENV}/install/bin/Release/liblibpng.dll"
  530. "${MINGW_ENV}/install/bin/Release/libSILLY.dll"
  531. "${MINGW_ENV}/install/bin/Release/libzlib.dll"
  532. "${MINGW_ENV}/install/bin/Release/libzlib.dll"
  533. "${MINGW_ENV}/install/bin/libcAudio.dll"
  534. "${MINGW_ENV}/install/bin/wrap_oal.dll"
  535. "${MINGW_ENV}/install/bin/OpenAL32.dll"
  536. DESTINATION bin
  537. CONFIGURATIONS Release
  538. )
  539.  
  540. elseif(UNIX)
  541.  
  542. SeparateLibrariesByBuildType(
  543. "${OGRE_LIBRARIES}"
  544. OGRE_MAIN_DBG
  545. OGRE_MAIN_REL
  546. )
  547. InstallFollowingSymlink(
  548. ${OGRE_MAIN_REL}
  549. bin
  550. Release
  551. False
  552. )
  553. InstallFollowingSymlink(
  554. ${OGRE_MAIN_DBG}
  555. bin
  556. Debug
  557. False
  558. )
  559.  
  560. foreach(OGRE_PLUGIN ${OGRE_PLUGINS})
  561. SeparateLibrariesByBuildType(
  562. "${OGRE_${OGRE_PLUGIN}_LIBRARIES}"
  563. OGRE_PLUGIN_LIB_DBG
  564. OGRE_PLUGIN_LIB_REL
  565. )
  566. # Release
  567. InstallFollowingSymlink(
  568. ${OGRE_PLUGIN_LIB_REL}
  569. bin
  570. Release
  571. True
  572. )
  573. # Debug
  574. InstallFollowingSymlink(
  575. ${OGRE_PLUGIN_LIB_DBG}
  576. bin
  577. Debug
  578. True
  579. )
  580. endforeach()
  581.  
  582. endif()
  583.  
  584. ###############################################################################
  585. # CPack
  586. ###############################################################################
  587.  
  588. configure_file("${CMAKE_SOURCE_DIR}/cpack/zip.cmake.in"
  589. "${CMAKE_CURRENT_BINARY_DIR}/cpack/zip.cmake" @ONLY
  590. )
  591.  
  592. add_custom_target(zip
  593. COMMAND cpack --config "${CMAKE_CURRENT_BINARY_DIR}/cpack/zip.cmake"
  594. DEPENDS Thrive
  595. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement