terravisor/CMakeLists.txt

99 lines
2.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})
if (WIN32)
set(VCPKG_ROOT "C:/users/jmchr/vcpkg")
else()
set(VCPKG_ROOT "/vcpkg")
endif()
#include(C:/users/jmchr/vcpkg/scripts/buildsystems/vcpkg.cmake)
# Use the vcpkg toolchain file
if(DEFINED ENV{VCPKG_TOOLCHAIN})
set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_TOOLCHAIN})
endif()
# Find packages using vcpkg
find_package(GLEW CONFIG REQUIRED)
find_package(glfw3 CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
find_package(assimp CONFIG REQUIRED)
find_package(FreeImage 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}/source/*.cpp"
)
# Add header files
file(GLOB_RECURSE HEADERS
"${CMAKE_SOURCE_DIR}/include/*.h"
)
# Add shader files
file(GLOB SHADERS
"${CMAKE_SOURCE_DIR}/shaders/*.glsl"
)
# 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"
)
message(STATUS "Sources: ${SOURCES}")
# Add the executable
add_executable(TerraVisor ${SOURCES} ${HEADERS} ${IMGUI_SOURCES})
# Include directories
include_directories(
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/imgui
${CMAKE_SOURCE_DIR}/imgui/backends
)
# Link libraries using vcpkg
# Link the FreeImage library explicitly
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()
# Custom target for shaders
add_custom_target(copy_shaders ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/shaders ${CMAKE_BINARY_DIR}/shaders
)
# Custom target for shaders
add_custom_target(copy_hgt ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/hgt ${CMAKE_BINARY_DIR}/hgt
)
# 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 copy_hgt)