CMakeLists.txt

🧩 Syntax:
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)