diff --git a/CMakeLists.txt b/CMakeLists.txt index 22e7a964cec7702151904f3b7953b6f2af52b62d..e3926cd1e1add363e27d34ec3192286996c0ec1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,8 @@ elseif (${CMAKE_VERSION} VERSION_GREATER 3.0.0) else (${CMAKE_VERSION} VERSION_GREATER 3.9.0) project(OpenPose) endif (${CMAKE_VERSION} VERSION_GREATER 3.9.0) -cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR) # min. cmake version recommended by Caffe +cmake_minimum_required(VERSION 3.0 FATAL_ERROR) # required by cmake eigen finder to find locally installed versions (e.g., CUDA 9.2 support was added in eigen 3.3.5) +# cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR) # min. cmake version recommended by Caffe ### Extra functionality @@ -275,11 +276,11 @@ option(WITH_OPENCV_WITH_OPENGL "Much faster GUI display, but you must also enabl # Set the acceleration library if (WIN32 OR APPLE) - set(WITH_EIGEN NONE CACHE STRING "Select the Eigen mode (NONE if not required or DOWNLOAD to let OpenPose download it).") - set_property(CACHE WITH_EIGEN PROPERTY STRINGS NONE BUILD) + set(WITH_EIGEN NONE CACHE STRING "Select the Eigen mode: NONE if not required, BUILD to let OpenPose download it, or FIND to let CMake find it (e.g., if you installed it manually).") + set_property(CACHE WITH_EIGEN PROPERTY STRINGS NONE BUILD FIND) elseif (UNIX AND NOT APPLE) - set(WITH_EIGEN NONE CACHE STRING "Select the Eigen mode (NONE if not required, APT_GET if you used `sudo apt-get install libeigen3-dev`, BUILD to let OpenPose download it).") - set_property(CACHE WITH_EIGEN PROPERTY STRINGS NONE APT_GET BUILD) + set(WITH_EIGEN NONE CACHE STRING "Select the Eigen mode: NONE if not required, BUILD to let OpenPose download it, or FIND to let CMake find it (e.g., if you installed it manually or used `sudo apt-get install libeigen3-dev`).") + set_property(CACHE WITH_EIGEN PROPERTY STRINGS NONE BUILD FIND) endif (WIN32 OR APPLE) # # Suboptions for OpenPose tracking @@ -388,11 +389,18 @@ else (${WITH_EIGEN} MATCHES "NONE") download_zip("eigen_2018_05_23.zip" ${OP_URL} ${FIND_LIB_PREFIX} 29B9B2FD4679D587BB67467F09EE8365) # Set path set(EIGEN3_INCLUDE_DIRS "3rdparty/eigen/include/") - # Alread installed with apt-get - elseif (${WITH_EIGEN} MATCHES "APT_GET") + # Leave to CMake to find it + elseif (${WITH_EIGEN} MATCHES "FIND") # Eigen - find_package(PkgConfig) - pkg_check_modules(EIGEN3 REQUIRED eigen3) + # # Option a) apt-get + # find_package(PkgConfig) + # pkg_check_modules(EIGEN3 REQUIRED eigen3) + # # Option b) Find it (including apt-get) + if (CUDA_VERSION_STRING STRGREATER "9.0") + find_package(Eigen3 3.3.5 REQUIRED NO_MODULE) + else (CUDA_VERSION_STRING STRGREATER "9.0") + find_package(Eigen3 3 REQUIRED NO_MODULE) + endif (CUDA_VERSION_STRING STRGREATER "9.0") endif (${WITH_EIGEN} MATCHES "BUILD") endif (${WITH_EIGEN} MATCHES "NONE") @@ -419,6 +427,8 @@ if (UNIX OR APPLE) # 3D if (WITH_3D_RENDERER) + # OpenGL + find_package(OpenGL REQUIRED) # GLUT find_package(GLUT REQUIRED) # OpenGL @@ -440,8 +450,16 @@ if (UNIX OR APPLE) if (NOT WITH_3D_RENDERER) message(FATAL_ERROR "WITH_3D_RENDERER is required if WITH_3D_ADAM_MODEL is enabled.") endif (NOT WITH_3D_RENDERER) - find_package(PkgConfig) - pkg_check_modules(EIGEN3 REQUIRED eigen3) + # Eigen + # # Option a) apt-get + # find_package(PkgConfig) + # pkg_check_modules(EIGEN3 REQUIRED eigen3) + # # Option b) Find it (including apt-get) + if (CUDA_VERSION_STRING STRGREATER "9.0") + find_package(Eigen3 3.3.5 REQUIRED NO_MODULE) + else (CUDA_VERSION_STRING STRGREATER "9.0") + find_package(Eigen3 3 REQUIRED NO_MODULE) + endif (CUDA_VERSION_STRING STRGREATER "9.0") # Others: sudo apt-get install libglm-dev # http://ceres-solver.org find_package(Ceres REQUIRED COMPONENTS SuiteSparse) @@ -821,6 +839,7 @@ endif (USE_ASIO) if (NOT ${WITH_EIGEN} MATCHES "NONE") include_directories( ${EIGEN3_INCLUDE_DIRS}) + set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} Eigen3::Eigen) endif (NOT ${WITH_EIGEN} MATCHES "NONE") if (APPLE) @@ -859,9 +878,10 @@ if (WITH_3D_ADAM_MODEL) include_directories(include/adam) # TODO: TEMPORARY - TO BE REMOVED IN THE FUTURE include_directories(${CERES_INCLUDE_DIRS}) include_directories(${EIGEN3_INCLUDE_DIRS}) + set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} Eigen3::Eigen) include_directories(${IGL_INCLUDE_DIRS}) include_directories(${LIBIGL_INCLUDE_DIRS}) - include_directories(${GLUT_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIR}) + include_directories(${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS}) endif (WITH_3D_ADAM_MODEL) # Windows includes if (WIN32)