diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5c0644f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,78 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 3.9) + +PROJECT(vke VERSION 0.1.0 DESCRIPTION "Vulkan Engine") + +SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +SET(CMAKE_CXX_FLAGS "-W -Wall") +SET(CMAKE_EXE_LINKER_FLAGS "-lm") + +IF(NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE Debug) +ENDIF() + +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + ADD_DEFINITIONS (-DDEBUG) + OPTION(ENABLE_VALIDATION "enable vulkan validation layer" ON) +ELSE() + OPTION(ENABLE_VALIDATION "enable vulkan validation layer" OFF) +ENDIF() + +if (NOT VULKAN_SDK) + set(VULKAN_SDK "$ENV{VULKAN_SDK}" CACHE STRING "LunarG Vulkan SDK path") + if (VULKAN_SDK) + set(ENV{VULKAN_SDK} ${VULKAN_SDK}) + SET(ENV{VK_LAYER_PATH} "${VULKAN_SDK}/etc/explicit_layer.d") + endif () +endif () + +MESSAGE(STATUS "VULKAN_SDK = $ENV{VULKAN_SDK}") +MESSAGE(STATUS "VK_LAYER_PATH = $ENV{VK_LAYER_PATH}") + +include_directories(external/glm) +include_directories(external/gli) +include_directories(external/glfw) + +if (NOT TARGET vkh_static) + add_subdirectory (external/vkh) +endif() + +FIND_PACKAGE(Vulkan REQUIRED) +#FIND_PACKAGE(GLFW3) + +FILE(GLOB SOURCES "src/*.cpp") + +INCLUDE(GNUInstallDirs) + +#CONFIGURE_FILE(vkh.pc.in vkh.pc @ONLY) +#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkh.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) + +FUNCTION (setup_lib LibName) + SET_TARGET_PROPERTIES(${LibName} PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + VERSION ${PROJECT_VERSION} + SOVERSION 1 + PUBLIC_HEADER include/vke.h + ) + TARGET_INCLUDE_DIRECTORIES(${LibName} PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${Vulkan_INCLUDE_DIRS} + ) + TARGET_LINK_LIBRARIES(${LibName} + ${Vulkan_LIBRARIES} + vkh_static + #${GLFW3_LIBRARY} + ) + INSTALL(TARGETS ${LibName} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +ENDFUNCTION () + +ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${SOURCES}) +SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE OFF) +setup_lib ("${PROJECT_NAME}_static") + +ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${SOURCES}) +SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE ON) +setup_lib ("${PROJECT_NAME}_shared") |