From cd2b8cc822b341a714fc6fbca15fddef80d2ee95 Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Wed, 22 May 2024 14:38:51 +0200 Subject: [PATCH] Make assimp optional --- 3rdParty/CMakeLists.txt | 2 +- 3rdParty/assimp/CMakeLists.txt | 52 ++++++++++++++++++++++------------ CMakeLists.txt | 9 ++++-- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/3rdParty/CMakeLists.txt b/3rdParty/CMakeLists.txt index a40f3d2..0c733a3 100644 --- a/3rdParty/CMakeLists.txt +++ b/3rdParty/CMakeLists.txt @@ -2,8 +2,8 @@ add_subdirectory(glm) if (NOT ANDROID AND NOT IOS) add_subdirectory(glfw) add_subdirectory(ftxui) - add_subdirectory(assimp) endif() +add_subdirectory(assimp) add_subdirectory(fmt) add_subdirectory(spdlog) add_subdirectory(yaml-cpp) diff --git a/3rdParty/assimp/CMakeLists.txt b/3rdParty/assimp/CMakeLists.txt index aa65379..6c32a3d 100644 --- a/3rdParty/assimp/CMakeLists.txt +++ b/3rdParty/assimp/CMakeLists.txt @@ -1,23 +1,39 @@ include(FetchContent) -if(NOT DEFINED ASSIMP_REPO) - set(ASSIMP_REPO https://github.com/assimp/assimp.git) +find_package(assimp QUIET) +if (assimp_FOUND) + message("Using system assimp") +elseif (USE_ASSIMP) + if(NOT DEFINED ASSIMP_REPO) + set(ASSIMP_REPO https://github.com/assimp/assimp.git) + endif () + FetchContent_Declare( + assimp + EXCLUDE_FROM_ALL + GIT_REPOSITORY ${ASSIMP_REPO} + GIT_TAG v5.0.1 + GIT_SHALLOW TRUE + ) + + set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) + set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE) + set(ASSIMP_BUILD_SAMPLES OFF CACHE BOOL "" FORCE) + set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE BOOL "" FORCE) + set(ASSIMP_INSTALL OFF CACHE BOOL "" FORCE) + set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE) + set(ASSIMP_BUILD_SAMPLES OFF CACHE BOOL "" FORCE) + + FetchContent_MakeAvailable(assimp) + + set(assimp_FOUND ON PARENT_SCOPE) endif () -FetchContent_Declare( - assimp - EXCLUDE_FROM_ALL - GIT_REPOSITORY ${ASSIMP_REPO} - GIT_TAG v5.0.1 - GIT_SHALLOW TRUE -) -set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) -set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE) -set(ASSIMP_BUILD_SAMPLES OFF CACHE BOOL "" FORCE) -set(ASSIMP_INJECT_DEBUG_POSTFIX OFF CACHE BOOL "" FORCE) -set(ASSIMP_INSTALL OFF CACHE BOOL "" FORCE) -set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE) -set(ASSIMP_BUILD_SAMPLES OFF CACHE BOOL "" FORCE) - -FetchContent_MakeAvailable(assimp) \ No newline at end of file +function(LinkAssimp TARGET) + if (NOT assimp_FOUND) + find_package(assimp QUIET) + endif () + if (assimp_FOUND) + target_link_libraries(${TARGET} PUBLIC assimp) + endif () +endfunction() \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 62d4b29..189ab09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,14 @@ cmake_minimum_required(VERSION 3.28 FATAL_ERROR) +option(USE_ASSIMP "If assimp should be used" ON) + include(cmake/VarsFromFile.cmake) include(cmake/SetCompilerSettings.cmake) include(cmake/SetupVulkan.cmake) include(cmake/Filter.cmake) +VarsFromFile("DependencyMirrors.txt") # Load mirror list (for CICD) + set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) if(LINUX) @@ -84,7 +88,6 @@ if (NOT ANDROID AND NOT IOS) if (libjpeg-turbo_FOUND) target_link_libraries(openVulkanoCpp PRIVATE libjpeg-turbo::turbojpeg) endif() - target_link_libraries(openVulkanoCpp PRIVATE assimp) target_link_libraries(openVulkanoCpp PRIVATE ftxui::screen ftxui::dom ftxui::component) endif() @@ -106,4 +109,6 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_definitions(DEBUG) endif() -SetGlmDefines(openVulkanoCpp) \ No newline at end of file +SetGlmDefines(openVulkanoCpp) + +LinkAssimp(openVulkanoCpp) \ No newline at end of file