Update CMakeLists.txt
This commit is contained in:
@@ -19,6 +19,10 @@ 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")
|
||||
|
||||
if(LINUX)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native")
|
||||
endif()
|
||||
|
||||
project (openVulkanoCpp VERSION 1.0 LANGUAGES C CXX)
|
||||
add_executable(openVulkanoCpp openVulkanoCpp/main.cpp)
|
||||
|
||||
@@ -28,6 +32,11 @@ target_include_directories(openVulkanoCpp PUBLIC openVulkanoCpp)
|
||||
|
||||
# Setup IOS
|
||||
if(IOS)
|
||||
set(APP_BUNDLE_IDENTIFIER "eu.georgh93.openVulkano")
|
||||
set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER})
|
||||
set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER})
|
||||
set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER})
|
||||
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "14.1") # The used ARKit features are only available starting with iOS 14
|
||||
|
||||
target_link_libraries(openVulkanoCpp
|
||||
@@ -42,16 +51,48 @@ if(IOS)
|
||||
PRIVATE c++
|
||||
PRIVATE c
|
||||
)
|
||||
|
||||
|
||||
# Locate system libraries on iOS
|
||||
find_library(UIKIT UIKit)
|
||||
find_library(FOUNDATION Foundation)
|
||||
find_library(MOBILECORESERVICES MobileCoreServices)
|
||||
find_library(CFNETWORK CFNetwork)
|
||||
find_library(SYSTEMCONFIGURATION SystemConfiguration)
|
||||
|
||||
# link the frameworks located above
|
||||
target_link_libraries(openVulkanoCpp PRIVATE ${UIKIT})
|
||||
target_link_libraries(openVulkanoCpp PRIVATE ${FOUNDATION})
|
||||
target_link_libraries(openVulkanoCpp PRIVATE ${MOBILECORESERVICES})
|
||||
target_link_libraries(openVulkanoCpp PRIVATE ${CFNETWORK})
|
||||
target_link_libraries(openVulkanoCpp PRIVATE ${SYSTEMCONFIGURATION})
|
||||
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})
|
||||
if (APPLE)
|
||||
# Try to find xcframework of MoltenVK
|
||||
target_link_libraries(openVulkanoCpp)
|
||||
cmake_path(SET MoltenVK_path NORMALIZE "$ENV{VULKAN_SDK}/../MoltenVK/")
|
||||
cmake_path(SET MoltenVK_XC_path NORMALIZE "$ENV{VULKAN_SDK}/../MoltenVK/MoltenVK.xcframework")
|
||||
if (EXISTS "${MoltenVK_path}" AND EXISTS "${MoltenVK_XC_path}")
|
||||
if (EXISTS "${MoltenVK_path}/include")
|
||||
set(Vulkan_INCLUDE_DIR "${MoltenVK_path}/include")
|
||||
endif()
|
||||
|
||||
target_link_libraries(openVulkanoCpp PRIVATE "${MoltenVK_XC_path}/ios-arm64/libMoltenVK.a")
|
||||
message("Found MoltenVK xcframework: ${MoltenVK_XC_path}")
|
||||
endif()
|
||||
|
||||
if (NOT ${Vulkan_INCLUDE_DIR})
|
||||
#find_package(Vulkan REQUIRED COMPONENTS MoltenVK)
|
||||
#target_link_libraries(openVulkanoCpp PRIVATE Vulkan::MoltenVK)
|
||||
endif()
|
||||
else ()
|
||||
endif ()
|
||||
find_package(Vulkan REQUIRED)
|
||||
target_link_libraries(openVulkanoCpp PRIVATE Vulkan::Vulkan)
|
||||
endif()
|
||||
target_include_directories(openVulkanoCpp PUBLIC ${Vulkan_INCLUDE_DIR})
|
||||
|
||||
|
||||
if (ANDROID)
|
||||
add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR)
|
||||
@@ -64,15 +105,34 @@ elseif (LINUX)
|
||||
endif()
|
||||
|
||||
set_property(TARGET openVulkanoCpp PROPERTY CXX_STANDARD 17)
|
||||
target_compile_options(openVulkanoCpp PRIVATE -Wall)
|
||||
if (LINUX)
|
||||
target_compile_options(openVulkanoCpp PRIVATE -Wall)
|
||||
endif()
|
||||
|
||||
if (NOT ANDROID AND NOT IOS)
|
||||
Find_Package(OpenCV)
|
||||
Find_Package(libjpeg-turbo)
|
||||
target_include_directories(openVulkanoCpp PRIVATE ${OpenCV_INCLUDE_DIRS})
|
||||
target_link_libraries(openVulkanoCpp PRIVATE glfw ${OpenCV_LIBS} sago::platform_folders)
|
||||
target_link_libraries(openVulkanoCpp PRIVATE glfw ${OpenCV_LIBS} pugixml)
|
||||
if (libjpeg-turbo_FOUND)
|
||||
target_link_libraries(openVulkanoCpp PRIVATE libjpeg-turbo::turbojpeg)
|
||||
endif()
|
||||
#target_link_libraries(openVulkanoCpp PRIVATE assimp)
|
||||
add_compile_definitions(GLM_FORCE_AVX2)
|
||||
endif()
|
||||
|
||||
target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp spdlog glm assimp pugixml archive_static)
|
||||
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL)
|
||||
if (IOS)
|
||||
target_link_libraries(openVulkanoCpp PRIVATE "/opt/libjpeg-turbo-ios/lib/libturbojpeg.a")
|
||||
target_include_directories(openVulkanoCpp PRIVATE "/opt/libjpeg-turbo-ios/include")
|
||||
endif ()
|
||||
|
||||
find_package(LibArchive REQUIRED)
|
||||
set(ZLIB_USE_STATIC_LIBS ON)
|
||||
find_package(ZLIB REQUIRED)
|
||||
target_include_directories(openVulkanoCpp PRIVATE ${LibArchive_INCLUDE_DIR})
|
||||
target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp spdlog glm pugixml ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} stb eigen utf8cpp)
|
||||
|
||||
add_compile_definitions(GLM_FORCE_INTRINSICS)
|
||||
add_compile_definitions(GLM_FORCE_SILENT_WARNINGS)
|
||||
add_compile_definitions(LIBARCHIVE_STATIC)
|
||||
|
||||
Reference in New Issue
Block a user