CMakeLists.txt 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #https://github.com/meemknight/PikaEngine
  2. cmake_minimum_required(VERSION 3.16)
  3. #I want to link statically to the runtime library. This will help in sharing the game with others
  4. set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug$<$<CONFIG:Debug>:Debug>")
  5. set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Release>:Release>")
  6. #declare projects
  7. project(pikaCore)
  8. project(pikaGameplay)
  9. project(pikaProduction)
  10. #set glfw to NOT use dynamic runtime and not build unnecessary stuff
  11. set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
  12. set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
  13. set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
  14. set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
  15. set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
  16. #add third party libraries
  17. add_subdirectory(thirdparty/glfw-3.3.2)
  18. add_subdirectory(thirdparty/glad)
  19. add_subdirectory(thirdparty/glew)
  20. add_subdirectory(thirdparty/gl2d)
  21. add_subdirectory(thirdparty/glm)
  22. add_subdirectory(thirdparty/stb_image)
  23. add_subdirectory(thirdparty/stb_truetype)
  24. add_subdirectory(thirdparty/imgui-docking)
  25. #Define some macros for the project sources
  26. file(GLOB_RECURSE PIKA_SOURCES_CORE_CONFIG CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/core/coreConfig/*.cpp")
  27. file(GLOB_RECURSE PIKA_SOURCES_CORE_EDITOR CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaEditor/*.cpp")
  28. file(GLOB_RECURSE PIKA_SOURCES_CORE_RUNTIME CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaRuntime/*.cpp")
  29. file(GLOB_RECURSE PIKA_SOURCES_CORE_STD CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaSTD/*.cpp")
  30. file(GLOB_RECURSE PIKA_SOURCES_GAMEPLAY CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/gameplay/*.cpp")
  31. #pikaCore ############################################
  32. add_executable(pikaCore)
  33. target_compile_definitions(pikaCore PUBLIC PIKA_DEVELOPMENT)
  34. target_compile_definitions(pikaCore PUBLIC GLEW_STATIC)
  35. set_property(TARGET pikaCore PROPERTY CXX_STANDARD 17)
  36. target_sources(pikaCore PRIVATE
  37. "${PIKA_SOURCES_CORE_CONFIG}" "${PIKA_SOURCES_CORE_EDITOR}" "${PIKA_SOURCES_CORE_RUNTIME}" "${PIKA_SOURCES_CORE_STD}")
  38. target_include_directories(pikaCore PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/coreConfig/")
  39. target_include_directories(pikaCore PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaEditor/")
  40. target_include_directories(pikaCore PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaRuntime/")
  41. target_include_directories(pikaCore PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaSTD/")
  42. target_link_libraries(pikaCore PRIVATE glew glfw gl2d glm stb_image stb_truetype imgui)
  43. #################^^^^^^^^#############################
  44. #pikaGameplay ###########################################
  45. add_library(pikaGameplay SHARED)
  46. target_compile_definitions(pikaGameplay PUBLIC PIKA_DEVELOPMENT)
  47. target_compile_definitions(pikaGameplay PUBLIC GLEW_STATIC)
  48. set_property(TARGET pikaGameplay PROPERTY CXX_STANDARD 17)
  49. target_sources(pikaGameplay PRIVATE "${PIKA_SOURCES_CORE_CONFIG}"
  50. "${PIKA_SOURCES_CORE_STD}" "${PIKA_SOURCES_GAMEPLAY}" "${PIKA_SOURCES_CORE_RUNTIME}")
  51. target_include_directories(pikaGameplay PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaSTD/")
  52. target_include_directories(pikaGameplay PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/coreConfig/")
  53. target_include_directories(pikaGameplay PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/gameplay/")
  54. target_include_directories(pikaGameplay PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaRuntime/")
  55. target_link_libraries(pikaGameplay PRIVATE glew glfw gl2d glm stb_image stb_truetype imgui)
  56. #################^^^^^^^^^^^^^^############################
  57. #pikaProduction ###########################################
  58. add_executable(pikaProduction)
  59. target_compile_definitions(pikaProduction PUBLIC PIKA_PRODUCTION)
  60. target_compile_definitions(pikaProduction PUBLIC GLEW_STATIC)
  61. set_property(TARGET pikaProduction PROPERTY CXX_STANDARD 17)
  62. target_sources(pikaProduction PRIVATE
  63. "${PIKA_SOURCES_CORE_CONFIG}" "${PIKA_SOURCES_CORE_EDITOR}"
  64. "${PIKA_SOURCES_CORE_RUNTIME}" "${PIKA_SOURCES_CORE_STD}" "${PIKA_SOURCES_GAMEPLAY}")
  65. target_include_directories(pikaProduction PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/coreConfig/")
  66. target_include_directories(pikaProduction PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaEditor/")
  67. target_include_directories(pikaProduction PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaRuntime/")
  68. target_include_directories(pikaProduction PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/core/pikaSTD/")
  69. target_include_directories(pikaProduction PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/gameplay/")
  70. target_link_libraries(pikaProduction PRIVATE glew glfw gl2d glm stb_image stb_truetype imgui)
  71. #################^^^^^^^^^^^^^^############################