set(FOLDER_NAME "thirdparty") # Only show moderate warnings for external library code. if(IS_MSVC) string(REGEX REPLACE "/W[0-4]" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "/Wall" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "/W[0-4]" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REGEX REPLACE "/Wall" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") elseif(IS_GNU OR IS_CLANG) string(REGEX REPLACE "-Wall" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-Wall" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") endif() if(IS_MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W0") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0") elseif(IS_GNU OR IS_CLANG) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") endif() set(CLANG_TIDY_EXE_TEMP ${CLANG_TIDY_EXE}) set(CLANG_TIDY_EXE "") if(LSD_ENABLED) add_subdirectory(LSD) endif() add_subdirectory(PoissonRecon) if(GPU_ENABLED) add_subdirectory(SiftGPU) endif() add_subdirectory(VLFeat) if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.28") set(_fetch_content_declare_args "SYSTEM" "EXCLUDE_FROM_ALL") endif() if(FETCH_POSELIB) include(FetchContent) FetchContent_Declare(poselib URL https://github.com/PoseLib/PoseLib/archive/f119951fca625133112acde48daffa5f20eba451.zip URL_HASH SHA256=3faa27d9d1f6ae7cc47602a66c10ac6f64457bc65a959d1880947d3b3bfe1ed1 ${_fetch_content_declare_args} ) message(STATUS "Configuring PoseLib...") set(MARCH_NATIVE OFF CACHE BOOL "") FetchContent_MakeAvailable(poselib) # Rename PoseLib's benchmark folder to avoid conflict with Google Benchmark's # benchmark/benchmark.h header (PoseLib exposes its entire source dir as include path) if(EXISTS "${poselib_SOURCE_DIR}/benchmark") file(RENAME "${poselib_SOURCE_DIR}/benchmark" "${poselib_SOURCE_DIR}/poselib_benchmark") endif() message(STATUS "Configuring PoseLib... done") endif() if(FETCH_FAISS) include(FetchContent) FetchContent_Declare(faiss URL https://github.com/ahojnnes/faiss/archive/36b77353dc435383e0c23a709e7997a29d049041.zip URL_HASH SHA256=aaf90b3dd3e353ff0bc3391581788cda7c510749023d1937707fc99c38ef2587 ${_fetch_content_declare_args} ) message(STATUS "Configuring faiss...") set(FAISS_ENABLE_GPU OFF) set(FAISS_ENABLE_PYTHON OFF) set(FAISS_ENABLE_MKL OFF) set(BUILD_TESTING OFF) FetchContent_MakeAvailable(faiss) # Fix MSVC linker warning LNK4286: faiss headers use FAISS_API which # defaults to dllimport on Windows, but we build faiss as a static library. # Adding FAISS_MAIN_LIB as PUBLIC ensures consumers also get this defined. if(WIN32 AND TARGET faiss) target_compile_definitions(faiss PUBLIC FAISS_MAIN_LIB) endif() message(STATUS "Configuring faiss... done") endif() set(CLANG_TIDY_EXE ${CLANG_TIDY_EXE_TEMP})