CMakeLists.txt 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  2. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  3. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  4. find_package(PkgConfig REQUIRED)
  5. find_package(OpenGL REQUIRED)
  6. find_package(GLEW REQUIRED)
  7. pkg_check_modules(TINYXML REQUIRED IMPORTED_TARGET tinyxml)
  8. SET(GCC4_HEADERS
  9. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/Actor.h
  10. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ActorComponent.h
  11. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ActorFactory.h
  12. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/AudioComponent.h
  13. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/BaseScriptComponent.h
  14. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/RenderComponent.h
  15. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ScriptComponentInterface.h
  16. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/TransformComponent.h
  17. ${PROJECT_SOURCE_DIR}/Source/GCC4/Debugging/Logger.h
  18. ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManager.h
  19. ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManagerImpl.h
  20. ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/Events.h
  21. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/BaseGameLogic.h
  22. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode.h
  23. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/interfaces.h
  24. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Geometry.h
  25. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Lights.h
  26. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Material.h
  27. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Mesh.h
  28. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/MovementController.h
  29. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/OpenGLRenderer.h
  30. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Scene.h
  31. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/SceneNodes.h
  32. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Shaders.h
  33. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Sky.h
  34. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/LuaStateManager.h
  35. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptEvent.h
  36. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptExports.h
  37. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptProcess.h
  38. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptResource.h
  39. ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Initialization.h
  40. ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Process.h
  41. ${PROJECT_SOURCE_DIR}/Source/GCC4/Multicore/CriticalSection.h
  42. ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ResCache.h
  43. ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/XmlResource.h
  44. ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ZipFile.h
  45. ${PROJECT_SOURCE_DIR}/Source/GCC4/Unix/GameCodeStd.h
  46. ${PROJECT_SOURCE_DIR}/Source/GCC4/UserInterface/HumanView.h
  47. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Dialogs.h
  48. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Math.h
  49. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/String.h
  50. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/templates.h
  51. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/types.h
  52. )
  53. SET(GCC4_SOURCES
  54. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/Actor.cpp
  55. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/ActorFactory.cpp
  56. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/AudioComponent.cpp
  57. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/BaseScriptComponent.cpp
  58. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/RenderComponent.cpp
  59. ${PROJECT_SOURCE_DIR}/Source/GCC4/Actors/TransformComponent.cpp
  60. ${PROJECT_SOURCE_DIR}/Source/GCC4/Debugging/Logger.cpp
  61. ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManager.cpp
  62. ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/EventManagerImpl.cpp
  63. ${PROJECT_SOURCE_DIR}/Source/GCC4/EventManager/Events.cpp
  64. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/BaseGameLogic.cpp
  65. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode.cpp
  66. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode4.cpp
  67. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Geometry.cpp
  68. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Lights.cpp
  69. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Material.cpp
  70. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Mesh.cpp
  71. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/MovementController.cpp
  72. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/OpenGLRenderer.cpp
  73. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Scene.cpp
  74. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/SceneNodes.cpp
  75. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Shaders.cpp
  76. ${PROJECT_SOURCE_DIR}/Source/GCC4/Graphics3D/Sky.cpp
  77. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/LuaStateManager.cpp
  78. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptEvent.cpp
  79. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptExports.cpp
  80. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptProcess.cpp
  81. ${PROJECT_SOURCE_DIR}/Source/GCC4/LUAScripting/ScriptResource.cpp
  82. ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Initialization.cpp
  83. ${PROJECT_SOURCE_DIR}/Source/GCC4/Mainloop/Process.cpp
  84. ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ResCache.cpp
  85. ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/XmlResource.cpp
  86. ${PROJECT_SOURCE_DIR}/Source/GCC4/ResourceCache/ZipFile.cpp
  87. ${PROJECT_SOURCE_DIR}/Source/GCC4/Unix/GameCodeStd.cpp
  88. ${PROJECT_SOURCE_DIR}/Source/GCC4/UserInterface/HumanView.cpp
  89. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Dialogs.cpp
  90. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/Math.cpp
  91. ${PROJECT_SOURCE_DIR}/Source/GCC4/Utilities/String.cpp
  92. )
  93. add_library(gcc4 ${GCC4_HEADERS} ${GCC4_SOURCES})
  94. target_link_libraries(gcc4 PRIVATE PkgConfig::TINYXML)
  95. target_link_libraries(gcc4 PRIVATE GLEW::GLEW OpenGL::GL SDL3::SDL3 SDL3_image::SDL3_image)
  96. target_link_libraries(gcc4 PRIVATE imgui)
  97. target_link_libraries(gcc4 PUBLIC sol2::sol2 lua)
  98. target_link_libraries(gcc4 PUBLIC fastdelegate)
  99. target_link_libraries(gcc4 PUBLIC assimp)
  100. # target_include_directories(gcc4 PUBLIC ${LUA_INCLUDE_DIR})
  101. SET(TEAPOT_HEADERS
  102. ${PROJECT_SOURCE_DIR}/Source/GCC4/GameCode4/GameCode.h
  103. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotEvents.h
  104. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotWarsView.h
  105. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/Unix/TeapotWars.h
  106. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/Unix/TeapotWarsStd.h
  107. )
  108. SET(TEAPOT_SOURCES
  109. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotEvents.cpp
  110. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotWars.cpp
  111. ${PROJECT_SOURCE_DIR}/Source/TeapotWars/TeapotWarsView.cpp
  112. )
  113. add_executable(teapot-wars ${TEAPOT_HEADERS} ${TEAPOT_SOURCES} ${GCC4_HEADERS})
  114. target_link_libraries(teapot-wars PRIVATE
  115. gcc4
  116. GLEW::GLEW
  117. OpenGL::GL
  118. SDL3::SDL3
  119. SDL3_image::SDL3_image
  120. imgui
  121. ${CMAKE_DL_LIBS}
  122. )
  123. target_compile_options(gcc4 PRIVATE -Wall -Wextra -Wpedantic)
  124. target_compile_features(gcc4 PUBLIC cxx_std_20)
  125. target_compile_options(teapot-wars PRIVATE -Wall -Wextra -Wpedantic)
  126. target_compile_features(teapot-wars PUBLIC cxx_std_20)
  127. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  128. add_custom_command(
  129. TARGET teapot-wars PRE_BUILD
  130. COMMAND ${CMAKE_COMMAND} -E copy_directory
  131. ${PROJECT_SOURCE_DIR}/Game
  132. ${CMAKE_BINARY_DIR}/)
  133. add_custom_command(
  134. TARGET teapot-wars PRE_BUILD
  135. COMMAND ${CMAKE_COMMAND} -E copy_directory
  136. ${PROJECT_SOURCE_DIR}/Assets
  137. ${CMAKE_BINARY_DIR}/Assets)