Advertisement
Guest User

CMake Lists

a guest
Apr 18th, 2024
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 2.60 KB | Source Code | 0 0
  1. cmake_minimum_required(VERSION 3.0.0)
  2. project(ltecher_adventure VERSION 0.1.0)
  3.  
  4. # SDL
  5. set(SDL_STATIC ON)
  6. set(SDL_SHARED OFF)
  7. set(SDL_TEST_LIBRARY OFF)
  8.  
  9. # PNG
  10. set(PNG_TESTS OFF)
  11. set(PNG_SHARED OFF)
  12.  
  13. # Shared libs
  14. set(BUILD_SHARED_LIBS OFF)
  15.  
  16. # C++
  17. set(CMAKE_CXX_STANDARD 20)
  18.  
  19. # Windows compability
  20. if (WIN32)
  21.   include(cmake/windows.cmake)
  22. endif()
  23.  
  24. # Libraries
  25. add_subdirectory(thirdparty/SDL)        # Rendering library
  26. add_subdirectory(thirdparty/SDL_image)  # Image loading library
  27. add_subdirectory(thirdparty/SDL_mixer)  # Audio loading library
  28. add_subdirectory(thirdparty/SDL_ttf)    # Font loading library
  29. add_subdirectory(thirdparty/SDL_net)    # Networking library
  30.  
  31. add_subdirectory(thirdparty/libpng)     # PNG loading library
  32.  
  33. # Sources
  34. file(GLOB_RECURSE MY_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
  35.  
  36. add_executable(${CMAKE_PROJECT_NAME} ${MY_SOURCES})
  37.  
  38. # Compilers
  39. message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}")
  40. if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  41.   include(cmake/compilers/clang.cmake)
  42. elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  43.   include(cmake/compilers/gcc.cmake)
  44. endif()
  45.  
  46. # Resources
  47. set(RESOURCES_PATH "resources/")
  48.  
  49. option(
  50.   HARDCODE_PATH_IN_DEBUG
  51.   "Sets if the path is hardcoded into the binary on debug mode.\n
  52.    Useful when building to other platforms and testing" ON)
  53.  
  54. if (CMAKE_BUILD_TYPE STREQUAL "Release")
  55.   set(PRODUCTION_BUILD 1)
  56.   target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC PRODUCTION_BUILD=1)
  57. else()
  58.   set(PRODUCTION_BUILD 0)
  59.   target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC PRODUCTION_BUILD=0)
  60. endif()
  61.  
  62. if (CMAKE_BUILD_TYPE STREQUAL "Release" OR NOT HARDCODE_PATH_IN_DEBUG)
  63.   target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC RESOURCES="${RESOURCES_PATH}")
  64. else()
  65.   set(RESOURCES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/resources/")
  66.   target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC RESOURCES="${CMAKE_CURRENT_SOURCE_DIR}/${RESOURCES_PATH}")
  67. endif()
  68.  
  69. message(STATUS "RESOURCES_PATH = ${RESOURCES_PATH}")
  70.  
  71. # Bundle (MacOS only)
  72. if (APPLE)
  73.   include(cmake/macos_bundle.cmake)
  74. endif()
  75.  
  76. # Linking
  77. target_include_directories("${CMAKE_PROJECT_NAME}" PRIVATE
  78.   "${CMAKE_CURRENT_SOURCE_DIR}/include/"
  79.   "${CMAKE_CURRENT_SOURCE_DIR}/src/"
  80. )
  81.  
  82. add_dependencies("${CMAKE_PROJECT_NAME}"
  83.   SDL3-static
  84.   #SDL3_image-static
  85.   #SDL3_mixer-static
  86.   #SDL3_net-static
  87.   #SDL3_ttf-static
  88.   #png_static
  89. )
  90.  
  91. target_link_libraries("${CMAKE_PROJECT_NAME}"
  92.   SDL3-static
  93.   #SDL3_image-static
  94.   #SDL3_mixer-static
  95.   #SDL3_net-static
  96.   #SDL3_ttf-static
  97.   #png_static
  98. )
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement