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)