61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
cmake_minimum_required(VERSION 3.10)
 | 
						|
project(TerraVisor)
 | 
						|
 | 
						|
set(CMAKE_CXX_STANDARD 17)
 | 
						|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
 | 
						|
 | 
						|
# Define output directories for different configurations
 | 
						|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
 | 
						|
 | 
						|
# Ensure vcpkg toolchain file is used
 | 
						|
# This is set through the CMakePresets.json or command line, so not directly here
 | 
						|
 | 
						|
# Find packages using vcpkg
 | 
						|
find_package(GLEW CONFIG REQUIRED)
 | 
						|
find_package(glfw3 CONFIG REQUIRED)
 | 
						|
 | 
						|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_BINARY_DIR}")
 | 
						|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}")
 | 
						|
 | 
						|
# Add source files
 | 
						|
file(GLOB_RECURSE SOURCES
 | 
						|
  "${CMAKE_SOURCE_DIR}/src/*.cpp"
 | 
						|
)
 | 
						|
 | 
						|
# Add header files
 | 
						|
file(GLOB_RECURSE HEADERS
 | 
						|
  "${CMAKE_SOURCE_DIR}/headers/*.h"
 | 
						|
)
 | 
						|
 | 
						|
# Add shader files
 | 
						|
file(GLOB SHADERS
 | 
						|
  "${CMAKE_SOURCE_DIR}/shaders/*.glsl"
 | 
						|
)
 | 
						|
 | 
						|
# Add the executable
 | 
						|
add_executable(TerraVisor ${SOURCES} ${HEADERS})
 | 
						|
 | 
						|
# Include directories
 | 
						|
include_directories(${CMAKE_SOURCE_DIR}/headers)
 | 
						|
 | 
						|
# Link libraries using vcpkg
 | 
						|
target_link_libraries(TerraVisor PRIVATE GLEW::GLEW glfw opengl32)
 | 
						|
 | 
						|
# Custom target for shaders
 | 
						|
add_custom_target(copy_shaders ALL
 | 
						|
  COMMAND ${CMAKE_COMMAND} -E copy_directory
 | 
						|
  ${CMAKE_SOURCE_DIR}/shaders ${CMAKE_BINARY_DIR}/shaders
 | 
						|
)
 | 
						|
 | 
						|
# Set subsystem based on build type
 | 
						|
if (WIN32)
 | 
						|
    if (CMAKE_BUILD_TYPE STREQUAL "Release")
 | 
						|
        set_target_properties(TerraVisor PROPERTIES LINK_FLAGS "-Wl,--subsystem,windows")
 | 
						|
    else()
 | 
						|
        set_target_properties(TerraVisor PROPERTIES LINK_FLAGS "-Wl,--subsystem,console")
 | 
						|
    endif()
 | 
						|
endif()
 | 
						|
 | 
						|
# Ensure shaders are copied before building the executable
 | 
						|
add_dependencies(TerraVisor copy_shaders)
 |