cmake_minimum_required(VERSION 3.16 FATAL_ERROR) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) if(LINUX) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) endif() if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunknown-pragmas") endif() add_subdirectory(3rdParty) #set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_SOURCE_DIR}/bin/release") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_SOURCE_DIR}/bin/debug") set(CMAKE_DEBUG_POSTFIX "d") project (openVulkanoCpp VERSION 1.0 LANGUAGES CXX) add_executable(openVulkanoCpp openVulkanoCpp/main.cpp) file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.cpp") target_sources(openVulkanoCpp PRIVATE ${sources}) target_include_directories(openVulkanoCpp PUBLIC openVulkanoCpp) # Setup IOS if(IOS) set(CMAKE_OSX_DEPLOYMENT_TARGET "14.1") # The used ARKit features are only available starting with iOS 14 target_link_libraries(openVulkanoCpp PUBLIC "-framework CoreFoundation" PRIVATE "-framework Foundation" PRIVATE "-framework CoreImage" PRIVATE "-framework CoreVideo" PRIVATE "-framework Metal" PRIVATE "-framework MetalPerformanceShaders" PUBLIC "-framework ARKit" PRIVATE "-lstdc++" PRIVATE c++ PRIVATE c ) endif () #Setup Vulkan if (NOT IOS) find_package(Vulkan REQUIRED) set(Vulkan_LIBRARIES Vulkan::Vulkan) target_link_libraries(openVulkanoCpp PRIVATE ${Vulkan_LIBRARIES}) target_include_directories(openVulkanoCpp PUBLIC ${Vulkan_INCLUDE_DIR}) else () endif () if (ANDROID) add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR) elseif (WIN32) add_definitions(-DVK_USE_PLATFORM_WIN32_KHR) elseif (LINUX) add_definitions(-DVK_USE_PLATFORM_XCB_KHR) find_package(XCB REQUIRED) link_libraries(${XCB_LIBRARIES}) endif() set_property(TARGET openVulkanoCpp PROPERTY CXX_STANDARD 17) target_compile_options(openVulkanoCpp PRIVATE -Wall) if (NOT ANDROID AND NOT IOS) Find_Package(OpenCV) target_include_directories(openVulkanoCpp PRIVATE ${OpenCV_INCLUDE_DIRS}) target_link_libraries(openVulkanoCpp PRIVATE glfw ${OpenCV_LIBS} sago::platform_folders) endif() target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp spdlog glm assimp pugixml archive_static) add_compile_definitions(GLM_FORCE_INTRINSICS) # copy shaders file(GLOB SHADERS "openVulkanoCpp/Shader/*.spv") file(COPY ${SHADERS} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/Shader/) file(COPY ${SHADERS} DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/Shader/)