2024-08-10 19:12:21 -04:00
|
|
|
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})
|
|
|
|
|
2024-08-19 15:20:26 -04:00
|
|
|
if (WIN32)
|
|
|
|
set(VCPKG_ROOT "C:/users/jmchr/vcpkg")
|
|
|
|
else()
|
|
|
|
set(VCPKG_ROOT "/vcpkg")
|
|
|
|
endif()
|
2024-08-19 09:58:22 -04:00
|
|
|
|
2024-08-12 16:05:20 -04:00
|
|
|
#include(C:/users/jmchr/vcpkg/scripts/buildsystems/vcpkg.cmake)
|
|
|
|
|
2024-08-12 17:03:03 -04:00
|
|
|
# Use the vcpkg toolchain file
|
2024-08-12 16:05:20 -04:00
|
|
|
if(DEFINED ENV{VCPKG_TOOLCHAIN})
|
2024-08-12 17:03:03 -04:00
|
|
|
set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_TOOLCHAIN})
|
2024-08-12 16:05:20 -04:00
|
|
|
endif()
|
2024-08-10 21:27:13 -04:00
|
|
|
|
|
|
|
# Find packages using vcpkg
|
|
|
|
find_package(GLEW CONFIG REQUIRED)
|
|
|
|
find_package(glfw3 CONFIG REQUIRED)
|
2024-08-12 17:06:33 -04:00
|
|
|
find_package(glm CONFIG REQUIRED)
|
2024-08-11 12:12:26 -04:00
|
|
|
find_package(assimp CONFIG REQUIRED)
|
2024-08-20 00:55:04 -04:00
|
|
|
find_package(FreeImage REQUIRED)
|
2024-08-10 21:27:13 -04:00
|
|
|
|
2024-08-10 19:12:21 -04:00
|
|
|
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
|
2024-08-11 15:09:37 -04:00
|
|
|
"${CMAKE_SOURCE_DIR}/source/*.cpp"
|
2024-08-10 19:12:21 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
# Add header files
|
|
|
|
file(GLOB_RECURSE HEADERS
|
2024-08-12 17:30:29 -04:00
|
|
|
"${CMAKE_SOURCE_DIR}/include/*.h"
|
2024-08-10 19:12:21 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
# Add shader files
|
|
|
|
file(GLOB SHADERS
|
|
|
|
"${CMAKE_SOURCE_DIR}/shaders/*.glsl"
|
|
|
|
)
|
|
|
|
|
2024-08-11 14:52:19 -04:00
|
|
|
# Add ImGui source files
|
|
|
|
file(GLOB IMGUI_SOURCES
|
|
|
|
"${CMAKE_SOURCE_DIR}/imgui/*.cpp"
|
|
|
|
"${CMAKE_SOURCE_DIR}/imgui/backends/imgui_impl_glfw.cpp"
|
|
|
|
"${CMAKE_SOURCE_DIR}/imgui/backends/imgui_impl_opengl3.cpp"
|
|
|
|
)
|
|
|
|
|
2024-08-12 21:40:28 -04:00
|
|
|
message(STATUS "Sources: ${SOURCES}")
|
|
|
|
|
|
|
|
|
2024-08-10 19:12:21 -04:00
|
|
|
# Add the executable
|
2024-08-11 14:52:19 -04:00
|
|
|
add_executable(TerraVisor ${SOURCES} ${HEADERS} ${IMGUI_SOURCES})
|
2024-08-10 19:12:21 -04:00
|
|
|
|
2024-08-10 21:27:13 -04:00
|
|
|
# Include directories
|
2024-08-11 14:52:19 -04:00
|
|
|
include_directories(
|
2024-08-11 15:09:37 -04:00
|
|
|
${CMAKE_SOURCE_DIR}/include
|
2024-08-11 14:52:19 -04:00
|
|
|
${CMAKE_SOURCE_DIR}/imgui
|
|
|
|
${CMAKE_SOURCE_DIR}/imgui/backends
|
|
|
|
)
|
2024-08-10 19:12:21 -04:00
|
|
|
|
2024-08-20 01:01:41 -04:00
|
|
|
target_link_libraries(TerraVisor PRIVATE GLEW::GLEW glfw glm::glm assimp::assimp)
|
|
|
|
|
2024-08-10 21:27:13 -04:00
|
|
|
# Link libraries using vcpkg
|
2024-08-19 15:20:26 -04:00
|
|
|
# Link the FreeImage library explicitly
|
2024-08-20 01:01:41 -04:00
|
|
|
#if (WIN32)
|
|
|
|
# target_link_libraries(TerraVisor PRIVATE GLEW::GLEW glfw glm::glm assimp::assimp "${VCPKG_ROOT}/installed/x64-windows/lib/FreeImage.lib")
|
|
|
|
#else()
|
|
|
|
# target_link_libraries(TerraVisor PRIVATE GLEW::GLEW glfw glm::glm assimp::assimp "${VCPKG_ROOT}/installed/x64-linux/lib/libFreeImage.a")
|
|
|
|
#endif()
|
2024-08-10 19:12:21 -04:00
|
|
|
|
|
|
|
# Custom target for shaders
|
|
|
|
add_custom_target(copy_shaders ALL
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
|
|
${CMAKE_SOURCE_DIR}/shaders ${CMAKE_BINARY_DIR}/shaders
|
|
|
|
)
|
|
|
|
|
2024-08-20 00:48:04 -04:00
|
|
|
# Custom target for hgt
|
2024-08-19 10:28:26 -04:00
|
|
|
add_custom_target(copy_hgt ALL
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
|
|
${CMAKE_SOURCE_DIR}/hgt ${CMAKE_BINARY_DIR}/hgt
|
|
|
|
)
|
|
|
|
|
2024-08-10 19:12:21 -04:00
|
|
|
# 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
|
2024-08-19 10:28:26 -04:00
|
|
|
add_dependencies(TerraVisor copy_shaders copy_hgt)
|