cmake_minimum_required(VERSION 3.24) project(Bigfoot VERSION 0.1.0 DESCRIPTION "The Bigfoot engine" LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) get_property(is_multi_config GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) set(CMAKE_CONFIGURATION_TYPES "Release;RelWithDebInfo;Debug" CACHE STRING "" FORCE) option(BUILD_TESTS OFF) option(SAMPLE_APP OFF) option(TRACY ON) option(UNITY_BUILD ON) option(BUILD_TOOLS ON) option(VULKAN ON) option(BUILD_BENCHMARKS OFF) option(RENDER_DOC ON) set(AUTO_GENERATED_COMMENT "// AUTO-GENERATED DO NOT TOUCH") include(${CMAKE_SOURCE_DIR}/CMake/FindDependencies.cmake) include(${CMAKE_SOURCE_DIR}/CMake/Utils.cmake) include(${CMAKE_SOURCE_DIR}/CMake/Package.cmake) find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_OPTIMIZE_DEPENDENCIES 1) add_compile_definitions( $<$:NOMINMAX> $<$:WIN32_LEAN_AND_MEAN> $<$:BIGFOOT_WINDOWS> $<$:BIGFOOT_LINUX> $<$:BIGFOOT_OPTIMIZED> $<$:BIGFOOT_NOT_OPTIMIZED>) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") add_compile_definitions( $<$:_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE> $<$:_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG>) endif() #TODO: MSVC equivalent if(BUILD_TESTS) enable_testing() endif() set_property(GLOBAL PROPERTY USE_FOLDERS ON) SET(CMAKE_SKIP_BUILD_RPATH FALSE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) SET(CMAKE_INSTALL_RPATH "\${ORIGIN}") add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bigfoot/Sources) if(${BUILD_TESTS}) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/Bigfoot/Tests) endif() add_custom_target(NatVis SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Vendor/NatVis/EASTL/EASTL.natvis ${CMAKE_CURRENT_SOURCE_DIR}/Vendor/NatVis/VulkanHpp/VulkanHpp.natvis ${CMAKE_CURRENT_SOURCE_DIR}/Vendor/NatVis/GLM/GLM.natvis)