2025-07-13 09:54:57 -06:00

67 lines
1.5 KiB
CMake

cmake_minimum_required(VERSION 3.19)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(WIN32)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
endif()
project(Main)
file(GLOB SOURCES src/*.h src/*.cpp src/*.c)
add_executable(Main ${SOURCES})
target_include_directories(Main PUBLIC include src)
# Add ImGui sources
file(GLOB IMGUI_SOURCES
${CMAKE_CURRENT_LIST_DIR}/include/imgui/*.cpp
)
target_sources(Main PRIVATE ${IMGUI_SOURCES})
find_package(glfw3 3.4 REQUIRED)
set(OpenGL_GL_PREFERENCE GLVND)
find_package(OpenGL REQUIRED)
find_package(glm REQUIRED)
# copy shader files
file(GLOB GLSL_SOURCE_FILES
shaders/*.frag
shaders/*.vert
)
add_custom_target(Shaders DEPENDS ${GLSL_SOURCE_FILES})
add_dependencies(Main Shaders)
add_custom_command(TARGET Shaders POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"$<TARGET_PROPERTY:Main,SOURCE_DIR>/shaders"
"$<TARGET_PROPERTY:Main,BINARY_DIR>/$<CONFIGURATION>/shaders"
)
# copy textures
file(GLOB TEX_SOURCE_FILES
textures/*
)
add_custom_target(
Textures
DEPENDS ${TEX_SOURCE_FILES}
)
add_dependencies(Main Textures)
add_custom_command(TARGET Textures POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"$<TARGET_PROPERTY:Main,SOURCE_DIR>/assets/textures"
"$<TARGET_PROPERTY:Main,BINARY_DIR>/$<CONFIGURATION>/assets/textures"
)
if(UNIX)
set(GLFW3_LIBRARY glfw)
endif()
include_directories(${GLFW3_INCLUDE_DIR} ${GLM_INCLUDE_DIR})
target_link_libraries(Main ${GLFW3_LIBRARY} OpenGL::GL)