cmake_minimum_required(VERSION 3.5 FATAL_ERROR) cmake_policy(VERSION 3.5) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") set(RenderName PlumageRender) project(${RenderName}) set(3rdPARTY_PATH "${CMAKE_SOURCE_DIR}/3rdparty") set(3rdParty_imgui_path "${3rdPARTY_PATH}/imgui") set(3rdParty_gli_path "${3rdPARTY_PATH}/gli") set(3rdParty_glm_path "${3rdPARTY_PATH}/glm") set(3rdParty_stb_path "${3rdPARTY_PATH}/stb") set(3rdParty_tinygltf_path "${3rdPARTY_PATH}/tinygltf") set(3rdParty_ktx_path "${3rdPARTY_PATH}/ktx/include") set(3rdParty_ktx_otherInclude_path "${3rdPARTY_PATH}/ktx/other_include") set(3rdParty_vulkan_path "${3rdPARTY_PATH}/vulkan_include") set(KTX_DIR ${3rdPARTY_PATH}/ktx) set(KTX_SOURCES ${KTX_DIR}/lib/texture.c ${KTX_DIR}/lib/hashlist.c ${KTX_DIR}/lib/checkheader.c ${KTX_DIR}/lib/swap.c ${KTX_DIR}/lib/memstream.c ${KTX_DIR}/lib/filestream.c) set(lib_base_path "${CMAKE_SOURCE_DIR}/src/base" ) OPTION(USE_HEADLESS "Build the project using headless extension swapchain" OFF) set(RESOURCE_INSTALL_DIR "" CACHE PATH "Path to install resources to (leave empty for running uninstalled)") # Use FindVulkan module added with CMAKE 3.7 if (NOT CMAKE_VERSION VERSION_LESS 3.7.0) message(STATUS "Using module to find Vulkan") find_package(Vulkan) endif() IF(UNIX AND NOT APPLE) set(LINUX TRUE) ENDIF() IF(WIN32) IF (NOT Vulkan_FOUND) find_library(Vulkan_LIBRARY NAMES vulkan-1 vulkan PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan) IF (Vulkan_LIBRARY) set(Vulkan_FOUND ON) MESSAGE("Using bundled Vulkan library version") ENDIF() ENDIF() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WIN32_KHR") ELSEIF(LINUX) IF (NOT Vulkan_FOUND) find_library(Vulkan_LIBRARY NAMES vulkan HINTS "$ENV{VULKAN_SDK}/lib" "${CMAKE_SOURCE_DIR}/libs/vulkan" REQUIRED) IF (Vulkan_LIBRARY) set(Vulkan_FOUND ON) MESSAGE("Using bundled Vulkan library version") ENDIF() ENDIF() endif() find_package(Threads REQUIRED) IF(USE_HEADLESS) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_HEADLESS_EXT") ENDIF(USE_HEADLESS) IF (NOT Vulkan_FOUND) message(FATAL_ERROR "Could not find Vulkan library!") ELSE() message(STATUS ${Vulkan_LIBRARY}) ENDIF() # Set preprocessor defines set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX -D_USE_MATH_DEFINES") # Clang specific stuff if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch-enum") endif() file(GLOB SOURCE *.cpp ) if(RESOURCE_INSTALL_DIR) add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${RESOURCE_INSTALL_DIR}/\") install(DIRECTORY data/ DESTINATION ${RESOURCE_INSTALL_DIR}/) else() add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${CMAKE_SOURCE_DIR}/data/\") endif() # Compiler specific stuff IF(MSVC) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") endif() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/") add_subdirectory(${lib_base_path}) add_subdirectory(src)