procedural-3d-engine/CMakeLists.txt
Philipp Zabel b6f3b7614b Fix compilation of multithreading example on Debian with CMake 3.5.1
Compilation of the multithreading example on Debian with CMake 3.5.1 would
fail with the following error because ${PTHREAD} was not set:
    [ 61%] Linking CXX executable bin/multithreading
    /usr/bin/ld: CMakeFiles/multithreading.dir/multithreading/multithreading.cpp.o: undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'
This patch uses ${CMAKE_THREAD_LIB_INIT} [1] instead, initialized using
find_package(Threads REQUIRED).

[1] https://cmake.org/cmake/help/v2.8.12/cmake.html#module:FindThreads
2016-04-03 11:14:47 +02:00

105 lines
2.5 KiB
CMake

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
cmake_policy(VERSION 2.8)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
set(NAME vulkanExamples)
project(${NAME})
include_directories(external)
include_directories(external/glm)
include_directories(external/gli)
include_directories(external/assimp)
include_directories(base)
IF(WIN32)
find_library(VULKAN_LIB NAMES vulkan-1 vulkan PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan)
find_library(ASSIMP_LIBRARIES NAMES assimp libassimp.dll.a PATHS ${CMAKE_SOURCE_DIR}/libs/assimp)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_WIN32_KHR")
ELSE(WIN32)
find_library(VULKAN_LIB NAMES libvulkan.so PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan)
find_package(ASSIMP REQUIRED)
find_package(XCB REQUIRED)
find_package(Threads REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR")
# Todo : android?
ENDIF(WIN32)
message(STATUS ${VULKAN_LIB})
# Set preprocessor defines
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX -D_USE_MATH_DEFINES")
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_definitions(-std=c++14)
add_definitions(-std=c++0x)
add_definitions(-std=gnu++14)
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_LIB} ${ASSIMP_LIBRARIES} ${WINLIBS})
else(WIN32)
add_executable(${EXAMPLE_NAME} ${EXAMPLE_NAME}/${EXAMPLE_NAME}.cpp ${SOURCE})
target_link_libraries(${EXAMPLE_NAME} ${VULKAN_LIB} ${ASSIMP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
endif(WIN32)
endfunction(buildExample)
# Build all examples
function(buildExamples)
foreach(EXAMPLE ${EXAMPLES})
buildExample(${EXAMPLE})
endforeach(EXAMPLE)
endfunction(buildExamples)
# Compiler specific stuff
IF(MSVC)
SET(CMAKE_CXX_FLAGS "/EHsc")
ENDIF(MSVC)
IF(WIN32)
# Nothing here (yet)
ELSE(WIN32)
link_libraries(${XCB_LIBRARIES} ${VULKAN_LIB})
ENDIF(WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/")
set(EXAMPLES
bloom
computeshader
computeparticles
deferred
displacement
distancefieldfonts
gears
geometryshader
instancing
mesh
multithreading
multisampling
occlusionquery
offscreen
parallaxmapping
particlefire
pipelines
pushconstants
raytracing
radialblur
shadowmapping
shadowmappingomni
skeletalanimation
sphericalenvmapping
tessellation
texture
texturearray
texturecubemap
triangle
vulkanscene
)
buildExamples()