Spaces:
Running
on
Zero
Running
on
Zero
# Copyright (C) 2020, Inria | |
# GRAPHDECO research group, https://team.inria.fr/graphdeco | |
# All rights reserved. | |
# | |
# This software is free for non-commercial, research and evaluation use | |
# under the terms of the LICENSE.md file. | |
# | |
# For inquiries contact [email protected] and/or [email protected] | |
## Included once for all sub project. | |
## It contain the whole cmake instructions to find necessary common dependencies. | |
## 3rdParty (provided by sibr_addlibrary win3rdParty or from external packages) are then available in cmake sub projects. | |
## | |
## Do not include this file more than once but you can modify it to fit to your own project. | |
## So please, read it carefully because you can use on of these dependencies for your project or appen new one. | |
## | |
## As it is included after camke options, you can use conditional if(<CMAKE_PROJ_OPT>)/endif() to encapsulate your 3rdParty. | |
## | |
## win3rdParty function allowing to auto check/download/update binaries dependencies for current windows compiler | |
## Please open this file in order to get more documentation and usage examples. | |
include(Win3rdParty) | |
include(sibr_library) | |
Win3rdPartyGlobalCacheAction() | |
find_package(OpenGL REQUIRED) | |
set(OpenGL_GL_PREFERENCE "GLVND") | |
############ | |
## Find GLEW | |
############ | |
##for headless rendering | |
find_package(EGL QUIET) | |
if(EGL_FOUND) | |
add_definitions(-DGLEW_EGL) | |
message("Activating EGL support for headless GLFW/GLEW") | |
else() | |
message("EGL not found : EGL support for headless GLFW/GLEW is disabled") | |
endif() | |
if (MSVC11 OR MSVC12) | |
set(glew_multiset_arguments | |
CHECK_CACHED_VAR GLEW_INCLUDE_DIR PATH "glew-1.10.0/include" DOC "default empty doc" | |
CHECK_CACHED_VAR GLEW_LIBRARIES STRING LIST "debug;glew-1.10.0/${LIB_BUILT_DIR}/glew32d.lib;optimized;glew-1.10.0/${LIB_BUILT_DIR}/glew32.lib" DOC "default empty doc" | |
) | |
elseif (MSVC14 OR MSVC17) | |
set(glew_multiset_arguments | |
CHECK_CACHED_VAR GLEW_INCLUDE_DIR PATH "glew-2.0.0/include" DOC "default empty doc" | |
CHECK_CACHED_VAR GLEW_SHARED_LIBRARY_RELEASE PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32.lib" | |
CHECK_CACHED_VAR GLEW_STATIC_LIBRARY_RELEASE PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32s.lib" | |
CHECK_CACHED_VAR GLEW_SHARED_LIBRARY_DEBUG PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32d.lib" | |
CHECK_CACHED_VAR GLEW_STATIC_LIBRARY_DEBUG PATH "glew-2.0.0/${LIB_BUILT_DIR}/glew32sd.lib" | |
) | |
else () | |
message("There is no provided GLEW library for your compiler, relying on find_package to find it") | |
endif() | |
sibr_addlibrary(NAME GLEW #VERBOSE ON | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/glew-1.10.0.7z" | |
MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/glew-1.10.0.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glew-2.0.0.7z" # using recompiled version of glew | |
MULTI_SET ${glew_multiset_arguments} | |
) | |
set(GLEW_VERBOSE ON) | |
FIND_PACKAGE(GLEW REQUIRED) | |
IF(GLEW_FOUND) | |
INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) | |
ELSE(GLEW_FOUND) | |
MESSAGE("GLEW not found. Set GLEW_DIR to base directory of GLEW.") | |
ENDIF(GLEW_FOUND) | |
############## | |
## Find ASSIMP | |
############## | |
if (MSVC11 OR MSVC12) | |
set(assimp_set_arguments | |
CHECK_CACHED_VAR ASSIMP_DIR PATH "Assimp_3.1_fix" | |
) | |
elseif (MSVC14 OR MSVC17) | |
set(assimp_set_arguments | |
CHECK_CACHED_VAR ASSIMP_DIR PATH "Assimp-4.1.0" | |
) | |
else () | |
message("There is no provided ASSIMP library for your compiler, relying on find_package to find it") | |
endif() | |
sibr_addlibrary(NAME ASSIMP #VERBOSE ON | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/Assimp_3.1_fix.7z" | |
MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/Assimp_3.1_fix.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/Assimp-4.1.0.7z" | |
MULTI_SET | |
${assimp_set_arguments} | |
) | |
find_package(ASSIMP REQUIRED) | |
include_directories(${ASSIMP_INCLUDE_DIR}) | |
################ | |
## Find FFMPEG | |
################ | |
sibr_addlibrary(NAME FFMPEG | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/ffmpeg.zip" | |
MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/ffmpeg.zip" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/ffmpeg-4.0.2-win64-win3rdParty.7z" | |
SET CHECK_CACHED_VAR FFMPEG_DIR PATH ${FFMPEG_WIN3RDPARTY_DIR} | |
) | |
find_package(FFMPEG) | |
include_directories(${FFMPEG_INCLUDE_DIR}) | |
## COMMENT OUT ALL FFMPEG FOR CLUSTER | |
################### | |
## Find embree3 | |
################### | |
sibr_addlibrary( | |
NAME embree3 | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/embree2.7.0.x64.windows.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/embree-3.6.1.x64.vc14.windows.7z" # TODO SV: provide a valid version if required | |
) | |
# CLUSTER | |
#find_package(embree 3.0 REQUIRED PATHS "/data/graphdeco/share/embree/usr/local/lib64/cmake/" ) | |
find_package(embree 3.0 ) | |
################### | |
## Find eigen3 | |
################### | |
sibr_addlibrary( | |
NAME eigen3 | |
#MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/eigen-eigen-dc6cfdf9bcec.7z" | |
#MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/eigen-eigen-dc6cfdf9bcec.7z" # TODO SV: provide a valid version if required | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/eigen3.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/eigen3.7z" | |
SET CHECK_CACHED_VAR eigen3_DIR PATH "eigen/share/eigen3/cmake" | |
) | |
include_directories(/usr/include/eigen3) | |
add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO) | |
############# | |
## Find Boost | |
############# | |
set(Boost_REQUIRED_COMPONENTS "system;chrono;filesystem;date_time" CACHE INTERNAL "Boost Required Components") | |
if (WIN32) | |
# boost multiset arguments | |
if (MSVC11 OR MSVC12) | |
set(boost_multiset_arguments | |
CHECK_CACHED_VAR BOOST_ROOT PATH "boost_1_55_0" | |
CHECK_CACHED_VAR BOOST_INCLUDEDIR PATH "boost_1_55_0" | |
CHECK_CACHED_VAR BOOST_LIBRARYDIR PATH "boost_1_55_0/${LIB_BUILT_DIR}" | |
#CHECK_CACHED_VAR Boost_COMPILER STRING "-${Boost_WIN3RDPARTY_VCID}" DOC "vcid (eg: -vc110 for MSVC11)" | |
CHECK_CACHED_VAR Boost_COMPILER STRING "-vc110" DOC "vcid (eg: -vc110 for MSVC11)" # NOTE: if it doesnt work, uncomment this option and set the right value for VisualC id | |
) | |
elseif (MSVC14 OR MSVC17) | |
set(boost_multiset_arguments | |
CHECK_CACHED_VAR BOOST_ROOT PATH "boost-1.71" | |
CHECK_CACHED_VAR BOOST_INCLUDEDIR PATH "boost-1.71" | |
CHECK_CACHED_VAR BOOST_LIBRARYDIR PATH "boost-1.71/${LIB_BUILT_DIR}" | |
CHECK_CACHED_VAR Boost_COMPILER STRING "-vc141" DOC "vcid (eg: -vc110 for MSVC11)" # NOTE: if it doesnt work, uncomment this option and set the right value for VisualC id | |
) | |
option(BOOST_MINIMAL_VERSION "Only get minimal Boost dependencies" ON) | |
if(${BOOST_MINIMAL_VERSION}) | |
set(BOOST_MSVC14_ZIP "boost-1.71-ibr-minimal.7z") | |
else() | |
set(BOOST_MSVC14_ZIP "boost-1.71.7z") | |
endif() | |
else () | |
message("There is no provided Boost library for your compiler, relying on find_package to find it") | |
endif() | |
sibr_addlibrary(NAME Boost VCID TIMEOUT 600 #VERBOSE ON | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/boost_1_55_0.7z" | |
MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC11-splitted%20version/boost_1_55_0.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/${BOOST_MSVC14_ZIP}" # boost compatible with msvc14 | |
MULTI_SET ${boost_multiset_arguments} | |
CHECK_CACHED_VAR Boost_NO_SYSTEM_PATHS BOOL ON DOC "Set to ON to disable searching in locations not specified by these boost cached hint variables" | |
CHECK_CACHED_VAR Boost_NO_BOOST_CMAKE BOOL ON DOC "Set to ON to disable the search for boost-cmake (package cmake config file if boost was built with cmake)" | |
) | |
if(NOT Boost_COMPILER AND Boost_WIN3RDPARTY_USE) | |
message(WARNING "Boost_COMPILER is not set and it's needed.") | |
endif() | |
endif() | |
find_package(Boost 1.65.0 REQUIRED COMPONENTS ${Boost_REQUIRED_COMPONENTS}) | |
# for CLUSTER | |
##find_package(Boost 1.58.0 REQUIRED COMPONENTS ${Boost_REQUIRED_COMPONENTS}) | |
if(WIN32) | |
add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:/EHsc>") | |
#add_definitions(/EHsc) | |
endif() | |
if(Boost_LIB_DIAGNOSTIC_DEFINITIONS) | |
add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS}) | |
endif() | |
#if(WIN32) | |
add_definitions(-DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB) | |
#endif() | |
include_directories(${BOOST_INCLUDEDIR} ${Boost_INCLUDE_DIRS}) | |
link_directories(${BOOST_LIBRARYDIR} ${Boost_LIBRARY_DIRS}) | |
############## | |
## Find OpenMP | |
############## | |
find_package(OpenMP) | |
############## | |
## Find OpenCV | |
############## | |
if (WIN32) | |
if (${MSVC_TOOLSET_VERSION} EQUAL 143) | |
MESSAGE("SPECIAL OPENCV HANDLING") | |
set(opencv_set_arguments | |
CHECK_CACHED_VAR OpenCV_DIR PATH "install" ## see OpenCVConfig.cmake | |
) | |
elseif (MSVC11 OR MSVC12) | |
set(opencv_set_arguments | |
CHECK_CACHED_VAR OpenCV_DIR PATH "opencv/build" ## see OpenCVConfig.cmake | |
) | |
elseif (MSVC14) | |
set(opencv_set_arguments | |
CHECK_CACHED_VAR OpenCV_DIR PATH "opencv-4.5.0/build" ## see OpenCVConfig.cmake | |
) | |
else () | |
message("There is no provided OpenCV library for your compiler, relying on find_package to find it") | |
endif() | |
else() | |
message("There is no provided OpenCV library for your compiler, relying on find_package to find it") | |
endif() | |
sibr_addlibrary(NAME OpenCV #VERBOSE ON | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv.7z" | |
MSVC12 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv-4.5.0.7z" # opencv compatible with msvc14 and with contribs | |
MSVC17 "https://repo-sam.inria.fr/fungraph/dependencies/sibr/~0.9/opencv4-8.7z" | |
SET ${opencv_set_arguments} | |
) | |
find_package(OpenCV 4.5 REQUIRED) ## Use directly the OpenCVConfig.cmake provided | |
## FOR CLUSTER | |
###find_package(OpenCV 4.5 REQUIRED PATHS "/data/graphdeco/share/opencv/usr/local/lib64/cmake/opencv4/" ) ## Use directly the OpenCVConfig.cmake provided | |
##https://stackoverflow.com/questions/24262081/cmake-relwithdebinfo-links-to-debug-libs | |
set_target_properties(${OpenCV_LIBS} PROPERTIES MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELEASE) | |
add_definitions(-DOPENCV_TRAITS_ENABLE_DEPRECATED) | |
if(OpenCV_INCLUDE_DIRS) | |
foreach(inc ${OpenCV_INCLUDE_DIRS}) | |
if(NOT EXISTS ${inc}) | |
set(OpenCV_INCLUDE_DIR "" CACHE PATH "additional custom include DIR (in case of trouble to find it (fedora 17 opencv package))") | |
endif() | |
endforeach() | |
if(OpenCV_INCLUDE_DIR) | |
list(APPEND OpenCV_INCLUDE_DIRS ${OpenCV_INCLUDE_DIR}) | |
include_directories(${OpenCV_INCLUDE_DIRS}) | |
endif() | |
endif() | |
################### | |
## Find GLFW | |
################### | |
sibr_addlibrary( | |
NAME glfw3 | |
MSVC11 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glfw-3.2.1.7z" | |
MSVC14 "https://repo-sam.inria.fr/fungraph/dependencies/ibr-common/win3rdParty-MSVC15-splitted%20version/glfw-3.2.1.7z" # TODO SV: provide a valid version if required | |
SET CHECK_CACHED_VAR glfw3_DIR PATH "glfw-3.2.1" | |
) | |
### FOR CLUSTER COMMENT OUT lines above, uncomment lines below | |
##find_package(GLFW REQUIRED 3.3 ) | |
##message("***********=============> GLFW IS " ${GLFW_LIBRARY}) | |
##message("***********=============> GLFW IS " ${GLFW_LIBRARIES}) | |
find_package(glfw3 REQUIRED) | |
sibr_gitlibrary(TARGET imgui | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/imgui.git" | |
GIT_TAG "741fb3ab6c7e1f7cef23ad0501a06b7c2b354944" | |
) | |
## FOR CLUSTER COMMENT OUT nativefiledialog | |
sibr_gitlibrary(TARGET nativefiledialog | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/nativefiledialog.git" | |
GIT_TAG "ae2fab73cf44bebdc08d997e307c8df30bb9acec" | |
) | |
sibr_gitlibrary(TARGET mrf | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/mrf.git" | |
GIT_TAG "30c3c9494a00b6346d72a9e37761824c6f2b7207" | |
) | |
sibr_gitlibrary(TARGET nanoflann | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/nanoflann.git" | |
GIT_TAG "7a20a9ac0a1d34850fc3a9e398fc4a7618e8a69a" | |
) | |
sibr_gitlibrary(TARGET picojson | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/picojson.git" | |
GIT_TAG "7cf8feee93c8383dddbcb6b64cf40b04e007c49f" | |
) | |
sibr_gitlibrary(TARGET rapidxml | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/rapidxml.git" | |
GIT_TAG "069e87f5ec5ce1745253bd64d89644d6b894e516" | |
) | |
sibr_gitlibrary(TARGET xatlas | |
GIT_REPOSITORY "https://gitlab.inria.fr/sibr/libs/xatlas.git" | |
GIT_TAG "0fbe06a5368da13fcdc3ee48d4bdb2919ed2a249" | |
INCLUDE_DIRS "source/xatlas" | |
) | |
Win3rdPartyGlobalCacheAction() | |