CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. cmake_minimum_required (VERSION 3.12.0)
  2. project (Banshee3D)
  3. set (BSF_DIRECTORY ${PROJECT_SOURCE_DIR}/Source/bsf)
  4. set (BSF_SOURCE_DIR ${BSF_DIRECTORY}/Source)
  5. set (APP_ROOT_DIR ${PROJECT_SOURCE_DIR})
  6. set (BS_IS_BANSHEE3D 1)
  7. # Version
  8. set (BS_B3D_VERSION_MAJOR 0)
  9. set (BS_B3D_VERSION_MINOR 5)
  10. set (BS_B3D_VERSION_PATCH 0)
  11. set (BS_B3D_CURRENT_RELEASE_YEAR 2019)
  12. # Grab BSF
  13. find_path(SUBMODULE_SOURCES "Source/Foundation/bsfEngine/BsApplication.h" "Source/bsf/")
  14. if(NOT SUBMODULE_SOURCES)
  15. execute_process(COMMAND git submodule update
  16. --init
  17. -- Source/bsf
  18. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
  19. else()
  20. execute_process(COMMAND git submodule update
  21. -- Source/bsf
  22. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
  23. endif()
  24. mark_as_advanced(SUBMODULE_SOURCES)
  25. include(${BSF_SOURCE_DIR}/CMake/Properties.cmake)
  26. include(${BSF_SOURCE_DIR}/CMake/FindPackageOrBuild.cmake)
  27. include(${BSF_SOURCE_DIR}/CMake/HelperMethods.cmake)
  28. add_subdirectory(${BSF_SOURCE_DIR})
  29. set (BS_PREBUILT_DEPENDENCIES_VERSION 24)
  30. set (BS_SRC_DEPENDENCIES_VERSION 15)
  31. set (BS_BUILTIN_ASSETS_VERSION 17)
  32. # Options
  33. set(SCRIPT_BINDING_GENERATION OFF CACHE BOOL "If true, script binding generation will be supported through a specialized build target. Enable this if you plan on modifying the scripting API. Requires the SBGen tool dependency.")
  34. # Ensure dependencies are up to date
  35. ## Check data dependencies
  36. check_and_update_builtin_assets(Banshee ${PROJECT_SOURCE_DIR}/Data/Raw Raw ${BS_BUILTIN_ASSETS_VERSION} NO)
  37. ## Import built-in assets
  38. if(${INCLUDE_ASSET_PACKAGING_SCRIPTS})
  39. add_run_asset_import_target(EditorBuiltinAssets ${PROJECT_SOURCE_DIR}/Data ${BSF_SOURCE_DIR}/.. "--editor")
  40. add_upload_assets_target(EditorBuiltinAssets "BansheeCompiledData_Master" ${PROJECT_SOURCE_DIR}/Data Raw/DataPackageContents.txt)
  41. endif()
  42. ## Fetch built-in assets
  43. set(BANSHEE_COMPILED_ASSETS_VERSION_FILE ${PROJECT_SOURCE_DIR}/Data/.reqversion)
  44. file (STRINGS ${BANSHEE_COMPILED_ASSETS_VERSION_FILE} BANSHEE_COMPILED_ASSETS_VERSION)
  45. check_and_update_builtin_assets(BansheeCompiled ${PROJECT_SOURCE_DIR}/Data Data ${BANSHEE_COMPILED_ASSETS_VERSION} NO)
  46. # Sub-directories
  47. add_subdirectory(Source/EditorCore)
  48. ## Script interop
  49. add_subdirectory(Source/EditorScript)
  50. add_subdirectory(Source/EditorManaged)
  51. ## Executables
  52. add_subdirectory(Source/Banshee3D)
  53. add_subdirectory(Source/Game)
  54. ## Managed project dependencies
  55. add_dependencies(Banshee3D MBansheeEngine MBansheeEditor)
  56. add_dependencies(Game MBansheeEngine)
  57. if(MSVC)
  58. set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Banshee3D)
  59. endif()
  60. ## Install
  61. install(
  62. DIRECTORY Data/
  63. DESTINATION EditorData
  64. PATTERN "Data/Raw" EXCLUDE
  65. PATTERN ".version" EXCLUDE
  66. PATTERN ".reqversion" EXCLUDE
  67. PATTERN "Settings.asset" EXCLUDE
  68. )