procedural-3d-engine/CMakeLists.txt

167 lines
4.1 KiB
Text
Raw Normal View History

2016-02-16 15:07:25 +01:00
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
cmake_policy(VERSION 2.8)
2016-02-16 19:33:57 +02:00
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
2016-02-16 15:07:25 +01:00
set(NAME vulkanExamples)
2016-02-16 15:07:25 +01:00
project(${NAME})
include_directories(external)
include_directories(external/glm)
include_directories(external/gli)
include_directories(external/assimp)
include_directories(base)
OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF)
2017-02-02 08:54:56 +00:00
OPTION(USE_WAYLAND_WSI "Build the project using Wayland swapchain" OFF)
# 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()
2016-02-16 15:07:25 +01:00
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()
find_library(ASSIMP_LIBRARIES NAMES assimp libassimp.dll.a PATHS ${CMAKE_SOURCE_DIR}/libs/assimp)
2016-02-16 15:07:25 +01:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WIN32_KHR")
ELSE(WIN32)
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()
find_package(ASSIMP REQUIRED)
find_package(Threads REQUIRED)
IF(USE_D2D_WSI)
MESSAGE("Using direct to display extension...")
add_definitions(-D_DIRECT2DISPLAY)
2017-02-02 08:54:56 +00:00
ELSEIF(USE_WAYLAND_WSI)
find_package(Wayland REQUIRED)
if (NOT WAYLAND_FOUND)
message(FATAL_ERROR "Wayland development package not found")
endif ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WAYLAND_KHR")
include_directories(${WAYLAND_INCLUDE_DIR})
ELSE(USE_D2D_WSI)
find_package(XCB REQUIRED)
2016-02-16 15:07:25 +01:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR")
ENDIF(USE_D2D_WSI)
2016-02-16 15:07:25 +01:00
# Todo : android?
ENDIF(WIN32)
IF (NOT Vulkan_FOUND)
message(FATAL_ERROR "Could not find Vulkan library!")
ELSE()
message(STATUS ${Vulkan_LIBRARY})
ENDIF()
2016-02-16 15:07:25 +01:00
# Set preprocessor defines
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX -D_USE_MATH_DEFINES")
2016-02-16 15:07:25 +01:00
# Clang specific stuff
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-switch-enum")
endif()
2016-02-16 15:07:25 +01:00
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-std=c++11)
2016-02-16 15:07:25 +01:00
file(GLOB SOURCE *.cpp base/*.cpp)
# Function for building single example
function(buildExample EXAMPLE_NAME)
file(GLOB SOURCE *.cpp base/*.cpp ${EXAMPLE_NAME}/*.cpp)
if(WIN32)
add_executable(${EXAMPLE_NAME} WIN32 ${EXAMPLE_NAME}/${EXAMPLE_NAME}.cpp ${SOURCE})
target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WINLIBS})
2016-02-16 15:07:25 +01:00
else(WIN32)
add_executable(${EXAMPLE_NAME} ${EXAMPLE_NAME}/${EXAMPLE_NAME}.cpp ${SOURCE})
2017-02-02 08:54:56 +00:00
target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
2016-02-16 15:07:25 +01:00
endif(WIN32)
endfunction(buildExample)
# Build all examples
function(buildExamples)
foreach(EXAMPLE ${EXAMPLES})
buildExample(${EXAMPLE})
endforeach(EXAMPLE)
2016-02-16 15:07:25 +01:00
endfunction(buildExamples)
# Compiler specific stuff
IF(MSVC)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
2016-02-16 15:07:25 +01:00
ENDIF(MSVC)
IF(WIN32)
# Nothing here (yet)
ELSE(WIN32)
link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY})
2016-02-16 15:07:25 +01:00
ENDIF(WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/")
2016-02-16 15:07:25 +01:00
set(EXAMPLES
bloom
2016-10-31 21:32:54 +01:00
computecullandlod
computenbody
2016-02-16 15:07:25 +01:00
computeparticles
2016-10-31 21:32:54 +01:00
computeshader
debugmarker
2016-02-16 15:07:25 +01:00
deferred
2016-10-31 21:32:54 +01:00
deferredmultisampling
deferredshadows
2016-02-16 15:07:25 +01:00
displacement
distancefieldfonts
dynamicuniformbuffer
2016-02-16 15:07:25 +01:00
gears
geometryshader
2017-02-04 11:46:36 +01:00
hdr
indirectdraw
2016-02-16 15:07:25 +01:00
instancing
mesh
multisampling
2016-10-31 21:32:54 +01:00
multithreading
2016-02-16 15:07:25 +01:00
occlusionquery
offscreen
parallaxmapping
particlefire
2017-03-25 12:16:29 +01:00
pbrbasic
pbribl
2016-02-16 15:07:25 +01:00
pipelines
pushconstants
radialblur
2016-10-31 21:32:54 +01:00
raytracing
scenerendering
2016-12-17 00:13:55 +01:00
screenshot
shadowmapping
shadowmappingomni
skeletalanimation
specializationconstants
2016-02-16 15:07:25 +01:00
sphericalenvmapping
ssao
2016-10-31 21:32:54 +01:00
subpasses
terraintessellation
2016-02-16 15:07:25 +01:00
tessellation
textoverlay
2016-02-16 15:07:25 +01:00
texture
texture3d
2016-02-16 15:07:25 +01:00
texturearray
texturecubemap
texturemipmapgen
2016-10-31 21:32:54 +01:00
texturesparseresidency
2016-02-16 15:07:25 +01:00
triangle
2017-03-25 12:16:29 +01:00
viewportarray
2016-02-16 15:07:25 +01:00
vulkanscene
)
buildExamples()