From 7cd95fc8c87ccf218be3ef2a2f435f6dbf7acfa9 Mon Sep 17 00:00:00 2001 From: saschawillems Date: Sat, 12 Nov 2016 13:33:21 +0100 Subject: [PATCH] Use FindVulkan CMake module if version >= 3.7.0 (refs #225) --- CMakeLists.txt | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 73bd450b..3f54ee5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,25 +14,45 @@ include_directories(base) OPTION(USE_D2D_WSI "Build the project using Direct to Display 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 REQUIRED) +endif() + IF(WIN32) - find_library(VULKAN_LIB NAMES vulkan-1 vulkan PATHS ${CMAKE_SOURCE_DIR}/libs/vulkan) + 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) + ENDIF() + ENDIF() 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 vulkan HINTS "$ENV{VULKAN_SDK}/lib" "${CMAKE_SOURCE_DIR}/libs/vulkan" REQUIRED) + 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) + ENDIF() + ENDIF() find_package(ASSIMP REQUIRED) find_package(Threads REQUIRED) IF(USE_D2D_WSI) MESSAGE("Using direct to display extension...") add_definitions(-D_DIRECT2DISPLAY) ELSE(USE_D2D_WSI) - find_package(XCB REQUIRED) + find_package(XCB REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_USE_PLATFORM_XCB_KHR") ENDIF(USE_D2D_WSI) # Todo : android? ENDIF(WIN32) -message(STATUS ${VULKAN_LIB}) +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") @@ -47,10 +67,10 @@ 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}) + target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${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}) + target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) endif(WIN32) endfunction(buildExample) @@ -69,7 +89,7 @@ ENDIF(MSVC) IF(WIN32) # Nothing here (yet) ELSE(WIN32) - link_libraries(${XCB_LIBRARIES} ${VULKAN_LIB}) + link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY}) ENDIF(WIN32) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/") @@ -120,4 +140,4 @@ set(EXAMPLES vulkanscene ) -buildExamples() +buildExamples() \ No newline at end of file