CMakeLists.txt 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. cmake_minimum_required (VERSION 3.21.0)
  2. set (CMAKE_CXX_STANDARD 17)
  3. set(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo;Release" CACHE STRING "" FORCE)
  4. include("${CMAKE_SOURCE_DIR}/Tools/CMake/torque_macros.cmake")
  5. include("${CMAKE_SOURCE_DIR}/Tools/CMake/torque_configs.cmake")
  6. # Ensure multi-core compilation is enabled for everything
  7. add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
  8. # An application name must be set first
  9. set(TORQUE_APP_NAME "" CACHE STRING "the app name")
  10. if("${TORQUE_APP_NAME}" STREQUAL "")
  11. message(FATAL_ERROR "Please set TORQUE_APP_NAME first")
  12. endif()
  13. project(${TORQUE_APP_NAME})
  14. # Once an app name is determined, we know what our project pathing structure should look like
  15. set(TORQUE_APP_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/My Projects/${TORQUE_APP_NAME}")
  16. set(TORQUE_APP_GAME_DIRECTORY "${TORQUE_APP_ROOT_DIRECTORY}/game")
  17. #library handling
  18. set(TORQUE_LIB_ROOT_DIRECTORY "${CMAKE_SOURCE_DIR}/Engine/lib")
  19. set(TORQUE_LIB_TARG_DIRECTORY "${CMAKE_BINARY_DIR}/Engine/lib")
  20. set(TORQUE_SOURCE_DIRECTROY "${CMAKE_SOURCE_DIR}/Engine/source")
  21. # Ensure all possible configurations end up in the project directory
  22. set(CMAKE_INSTALL_PREFIX "${TORQUE_APP_ROOT_DIRECTORY}" CACHE STRING "" FORCE)
  23. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${TORQUE_APP_GAME_DIRECTORY}")
  24. set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Tools/CMake/finders")
  25. foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
  26. string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
  27. set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} "${TORQUE_APP_GAME_DIRECTORY}" )
  28. endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
  29. # Detect CPU Information
  30. if (CMAKE_SYSTEM_PROCESSOR MATCHES "arm")
  31. if( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8 )
  32. set( TORQUE_CPU_ARM64 ON )
  33. elseif( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 4 )
  34. set( TORQUE_CPU_ARM32 ON )
  35. endif()
  36. else()
  37. if( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 8 )
  38. set( TORQUE_CPU_X64 ON )
  39. elseif( CMAKE_CXX_SIZEOF_DATA_PTR EQUAL 4 )
  40. set( TORQUE_CPU_X32 ON )
  41. endif()
  42. endif()
  43. if(NOT TORQUE_SCRIPT_EXTENSION)
  44. set(TORQUE_SCRIPT_EXTENSION "tscript" CACHE STRING "The default script extension to use for TorqueScript files")
  45. endif()
  46. mark_as_advanced(TORQUE_SCRIPT_EXTENSION)
  47. set(TORQUE_MODULE_USER_PATH "" CACHE PATH "Additional search path for modules aside from the default Tools/CMake/modules.")
  48. mark_as_advanced(TORQUE_MODULE_USER_PATH)
  49. # Install Torque template
  50. if(NOT TORQUE_TEMPLATE)
  51. set(TORQUE_TEMPLATE "BaseGame" CACHE STRING "the template to use")
  52. endif()
  53. if (NOT TORQUE_INSTALLED_TEMPLATE)
  54. installTemplate(${TORQUE_TEMPLATE})
  55. set(TORQUE_INSTALLED_TEMPLATE TRUE CACHE BOOL "Whether or not the game template is installed. This may be reset to false (or removed) to force a reinstall.")
  56. endif(NOT TORQUE_INSTALLED_TEMPLATE)
  57. # Generate torqueConfig.h in our temp directory
  58. configure_file("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueConfig.h.in" "${TORQUE_APP_ROOT_DIRECTORY}/source/torqueConfig.h")
  59. if(APPLE)
  60. include("${CMAKE_SOURCE_DIR}/Tools/CMake/torqueMacOSconfigs.cmake")
  61. endif(APPLE)
  62. add_subdirectory(Engine)