diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b22a45e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,52 @@ +cmake_minimum_required(VERSION 3.10) +project(learnopengl) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +file(GLOB_RECURSE CPP_SOURCES CONFIGURE_DEPENDS src/*.cpp) +file(GLOB_RECURSE CPP_HEADERS CONFIGURE_DEPENDS src/*.hpp) +add_executable(main ${CPP_SOURCES} ${CPP_HEADERS}) + +# GLFW +set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) +add_subdirectory(lib/glfw) + +# GLEW +add_definitions(-DGLEW_STATIC) +include_directories(lib/glew/include) +add_library(glew STATIC lib/glew/src/glew.c) +target_include_directories(glew PUBLIC lib/glew/include) +target_compile_definitions(glew PRIVATE GLEW_STATIC) + +# GLM +add_subdirectory(lib/glm) + +target_link_libraries(main PRIVATE glfw glew glm) + +find_package(OpenGL REQUIRED) +target_link_libraries(main PRIVATE OpenGL::GL) + +if(APPLE) + target_link_libraries(main PRIVATE + "-framework Cocoa" + "-framework IOKit" + "-framework CoreVideo" + ) +elseif(WIN32) + target_link_libraries(main PRIVATE + opengl32 + gdi32 + user32 + shell32 + ) +elseif(UNIX) + target_link_libraries(main PRIVATE + X11 + pthread + dl + m + ) +endif() \ No newline at end of file