CMakeLists.txt 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #https://github.com/meemknight/cmakeSetup
  2. #Version 1.0.0
  3. cmake_minimum_required(VERSION 3.16)
  4. #set this to true to ship the game!
  5. #! ! ! ! ! ! !
  6. #DELETE THE OUT FOLDER AFTER CHANGING THIS BECAUSE VISUAL STUDIO DOESN'T SEEM TO RECOGNIZE THIS CHANGE AND REBUILD!
  7. option(PRODUCTION_BUILD "Make this a production build" OFF)
  8. #DELETE THE OUT FOLDER AFTER CHANGING THIS BECAUSE VISUAL STUDIO DOESN'T SEEM TO RECOGNIZE THIS CHANGE AND REBUILD!
  9. if (CMAKE_BUILD_TYPE STREQUAL "Debug")
  10. set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug")
  11. else()
  12. set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")
  13. endif()
  14. set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) #link time optimization
  15. project(gl3dDev)
  16. set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
  17. set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
  18. set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
  19. set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
  20. set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
  21. add_subdirectory(thirdparty/glfw-3.3.2) #window oppener
  22. add_subdirectory(thirdparty/glad) #opengl loader
  23. add_subdirectory(thirdparty/stb_image) #loading immaged
  24. add_subdirectory(thirdparty/glm) #math
  25. add_subdirectory(thirdparty/imgui-docking) #ui
  26. # Define MY_SOURCES to be a list of all the source files for my game
  27. file(GLOB_RECURSE MY_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
  28. add_executable("${CMAKE_PROJECT_NAME}")
  29. set_property(TARGET "${CMAKE_PROJECT_NAME}" PROPERTY CXX_STANDARD 17)
  30. if(PRODUCTION_BUILD)
  31. # setup the ASSETS_PATH macro to be in the root folder of your exe
  32. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC RESOURCES_PATH="./resources/")
  33. # remove the option to debug asserts.
  34. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC PRODUCTION_BUILD=1)
  35. else()
  36. # This is useful to get an ASSETS_PATH in your IDE during development
  37. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC RESOURCES_PATH="${CMAKE_CURRENT_SOURCE_DIR}/resources/")
  38. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC SHADERS_PATH="${CMAKE_CURRENT_SOURCE_DIR}/src/shaders/")
  39. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC PRODUCTION_BUILD=0)
  40. endif()
  41. target_sources("${CMAKE_PROJECT_NAME}" PRIVATE ${MY_SOURCES} )
  42. if(MSVC) # If using the VS compiler...
  43. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC _CRT_SECURE_NO_WARNINGS)
  44. set_target_properties("${CMAKE_PROJECT_NAME}" PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") #no console
  45. endif()
  46. target_include_directories("${CMAKE_PROJECT_NAME}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}//src/")
  47. target_include_directories("${CMAKE_PROJECT_NAME}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}//src/src/")
  48. target_link_libraries("${CMAKE_PROJECT_NAME}" PRIVATE glm glfw
  49. glad stb_image imgui)
  50. project(simpleDemo)
  51. add_subdirectory(headerOnly)
  52. add_executable("simpleDemo")
  53. set_property(TARGET simpleDemo PROPERTY CXX_STANDARD 17)
  54. target_sources(simpleDemo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}"/simpleDemo/mainDemo.cpp" )
  55. target_compile_definitions("${CMAKE_PROJECT_NAME}" PUBLIC RESOURCES_PATH="${CMAKE_CURRENT_SOURCE_DIR}/resources/")
  56. if(MSVC) # If using the VS compiler...
  57. target_compile_definitions(simpleDemo PUBLIC _CRT_SECURE_NO_WARNINGS)
  58. endif()
  59. target_link_libraries("${CMAKE_PROJECT_NAME}" PRIVATE glm glfw gl3d
  60. glad stb_image imgui)