plumageRender/CMakeLists.txt

108 lines
3.0 KiB
CMake

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)