cmake_minimum_required(VERSION 3.17) project(virtual-worlds) set(CMAKE_CXX_STANDARD 20) include(FetchContent) FetchContent_Declare ( glfw GIT_REPOSITORY https://github.com/glfw/glfw GIT_TAG 3.3.9 ) FetchContent_Declare ( glm GIT_REPOSITORY https://github.com/g-truc/glm GIT_TAG 1.0.0 ) FetchContent_Declare ( assimp GIT_REPOSITORY https://github.com/assimp/assimp GIT_TAG v5.3.1 ) set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE BOOL "" FORCE) set(ASSIMP_INSTALL OFF CACHE BOOL "" FORCE) add_library(glad src/glad.c include/glad/glad.h) target_include_directories(glad PRIVATE include) FetchContent_MakeAvailable(glfw glm assimp) set(ENGINE_INCLUDE_DIR include/engine) file(GLOB ENGINE_HEADER_LIST CONFIGURE_DEPENDS ${ENGINE_INCLUDE_DIR}/*.hpp) set(ENGINE_SOURCE_LIST src/Engine/Importer.cpp src/Engine/Mesh.cpp src/Engine/Scene.cpp) add_library(Engine ${ENGINE_SOURCE_LIST} ${ENGINE_HEADER_LIST}) target_link_libraries(Engine glfw glm assimp) target_include_directories(Engine PRIVATE ${ENGINE_INCLUDE_DIR} ${assimp_INCLUDE_DIR}) add_executable(virtual-worlds app/main.cpp) target_link_libraries(virtual-worlds glad glfw) target_include_directories(virtual-worlds PRIVATE include)