CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. cmake_minimum_required(VERSION 3.27)
  2. project(Snake)
  3. set(CMAKE_CXX_STANDARD 23)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. set(CMAKE_CXX_EXTENSIONS OFF)
  6. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  7. include(FetchContent)
  8. FetchContent_Declare(
  9. SDL2
  10. GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
  11. GIT_TAG 15ead9a40d09a1eb9972215cceac2bf29c9b77f6 # release-2.28.5
  12. FIND_PACKAGE_ARGS
  13. )
  14. FetchContent_Declare(
  15. SDL2_image
  16. GIT_REPOSITORY https://github.com/libsdl-org/SDL_image.git
  17. GIT_TAG 28b9daa15a59aa2829cd29944ca9ffbf049d7667 # release-2.8.1
  18. FIND_PACKAGE_ARGS
  19. )
  20. FetchContent_Declare(
  21. SDL2_ttf
  22. GIT_REPOSITORY https://github.com/libsdl-org/SDL_ttf.git
  23. GIT_TAG 89d1692fd8fe91a679bb943d377bfbd709b52c23 # release-2.20.2
  24. FIND_PACKAGE_ARGS
  25. )
  26. FetchContent_MakeAvailable(SDL2 SDL2_image SDL2_ttf)
  27. set(Boost_USE_MULTITHREADED ON)
  28. set(Boost_USE_STATIC_LIBS ON)
  29. set(Boost_USE_STATIC_RUNTIME OFF)
  30. find_package(Boost 1.74.0 REQUIRED COMPONENTS serialization program_options)
  31. configure_file(
  32. ${CMAKE_CURRENT_SOURCE_DIR}/Config.hxx.in
  33. ${CMAKE_CURRENT_BINARY_DIR}/Config.hxx
  34. @ONLY
  35. )
  36. add_executable(Snake WIN32 MACOSX_BUNDLE
  37. main.cxx
  38. SDL.cxx SDL.hxx
  39. SDLWindow.cxx SDLWindow.hxx
  40. SDLRenderer.cxx SDLRenderer.hxx
  41. game/GameState.hxx
  42. game/GameStateManager.cxx game/GameStateManager.hxx
  43. game/LoadingState.cxx game/LoadingState.hxx
  44. game/SplashState.cxx game/SplashState.hxx
  45. game/MenuState.cxx game/MenuState.hxx
  46. game/PlayingState.cxx game/PlayingState.hxx
  47. game/GameOverState.cxx game/GameOverState.hxx
  48. game/HighScoreState.cxx game/HighScoreState.hxx
  49. game/CreditsState.cxx game/CreditsState.hxx
  50. game/AssetManager.cxx game/AssetManager.hxx
  51. game/ui/Button.cxx game/ui/Button.hxx
  52. game/ui/LineInput.cxx game/ui/LineInput.hxx
  53. game/ui/UiColor.hxx game/ui/UiColor.cxx
  54. game/HighScoreManager.cxx game/HighScoreManager.hxx
  55. ${CMAKE_CURRENT_BINARY_DIR}/Config.hxx
  56. )
  57. file(GLOB assets assets/*)
  58. target_sources(Snake PRIVATE ${assets})
  59. set_source_files_properties(${assets} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/assets)
  60. target_link_libraries(Snake PRIVATE
  61. SDL2::SDL2 SDL2::SDL2main
  62. SDL2_image::SDL2_image
  63. SDL2_ttf::SDL2_ttf
  64. Boost::headers Boost::serialization Boost::program_options
  65. )
  66. install(TARGETS Snake DESTINATION bin)
  67. install(FILES ${assets} DESTINATION share/snake/assets)