浏览代码

comiso tutorials are now working again

Former-commit-id: c7c1ed01677c331b8686aa4b82f57c3eea39c585
Daniele Panozzo 9 年之前
父节点
当前提交
508682ebc3
共有 5 个文件被更改,包括 77 次插入116 次删除
  1. 3 0
      .gitmodules
  2. 48 15
      cmake/CMakeLists.txt
  3. 0 60
      cmake/FindLIBCOMISOH.cmake
  4. 11 22
      optional/CMakeLists.txt
  5. 15 19
      tutorial/CMakeLists.txt

+ 3 - 0
.gitmodules

@@ -21,3 +21,6 @@ url=https://github.com/libigl/nanogui.git
 [submodule "external/tinyxml2"]
 	path = external/tinyxml2
 	url = https://github.com/leethomason/tinyxml2.git
+[submodule "external/CoMISo"]
+	path = external/CoMISo
+	url = https://github.com/libigl/CoMISo.git

+ 48 - 15
cmake/CMakeLists.txt

@@ -20,7 +20,7 @@ option(LIBIGL_WITH_XML         "Use XML"            OFF)
 
 ### Compilation configuration ###
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-set(CMAKE_MODULE_PATH "${CURRENT_SOURCE_DIR}")
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
 
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
@@ -40,8 +40,15 @@ set(LIBIGL_DEFINITIONS "")
 
 if(LIBIGL_USE_STATIC_LIBRARY)
   add_definitions(-DIGL_STATIC_LIBRARY)
+  list(APPEND LIBIGL_DEFINITIONS "-DIGL_STATIC_LIBRARY")
 endif()
 
+if(LIBIGL_WITH_VIEWER)
+  add_definitions(-DIGL_VIEWER_WITH_NANOGUI)
+  list(APPEND LIBIGL_DEFINITIONS "-DIGL_VIEWER_WITH_NANOGUI")
+endif()
+
+
 ### macro definition ###
 set(LIBIGL_ROOT "${PROJECT_SOURCE_DIR}/..")
 set(LIBIGL_SOURCE_DIR "${LIBIGL_ROOT}/include")
@@ -113,29 +120,55 @@ if(LIBIGL_WITH_BBW)
   endif()
 endif()
 
-### Compile the comiso part ###
-if(LIBIGL_WITH_COMISO)
-  find_package(LIBCOMISOH REQUIRED)
-  if(NOT LIBCOMISOH_FOUND)
-    message(SEND_ERROR "Could NOT find COMISO")
-  endif()
-  #include_directories( ${LIBCOMISO_INCLUDE_DIRS})
-  list(GET LIBCOMISO_INCLUDE_DIRS 0 COMISO_ROOT)
 
-  add_subdirectory("${COMISO_ROOT}/CoMISo/" "CoMISo")
+#Compile CoMISo
+# NOTE: this cmakefile works only with the
+# comiso available here: https://github.com/libigl/CoMISo
+IF(LIBIGL_WITH_COMISO)
+  set(COMISO_DIR "${LIBIGL_EXTERNAL}/CoMISo")
 
   set(COMISO_INCLUDE_DIRS
-    "${COMISO_ROOT}/CoMISo/ext/gmm-4.2/include"
-    "${COMISO_ROOT}/")
+    "${COMISO_DIR}/ext/gmm-4.2/include"
+    "${COMISO_DIR}/../")
 
   list(APPEND LIBIGL_INCLUDE_DIRS ${COMISO_INCLUDE_DIRS})
+  include_directories(${COMISO_INCLUDE_DIRS})
+
+  add_definitions(-DINCLUDE_TEMPLATES)
+  list(APPEND LIBIGL_DEFINITIONS "-DINCLUDE_TEMPLATES")
+
+  add_subdirectory("${COMISO_DIR}" "CoMISo")
 
   if(APPLE)
     find_library(accelerate_library Accelerate)
     list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${accelerate_library})
-  else()
-    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo")
-  endif()
+  elseif(UNIX)
+    find_package(BLAS REQUIRED)
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" ${BLAS_LIBRARIES})
+  endif(APPLE)
+
+  if(MSVC)
+    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_SCL_SECURE_NO_DEPRECATE")
+    #link_directories("${COMISO_ROOT}/CoMISo/ext/OpenBLAS-v0.2.14-Win64-int64/lib/")
+    list(APPEND LIBIGL_EXTRA_LIBRARIES "CoMISo" "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/lib/libopenblas.dll.a.lib")
+  endif(MSVC)
+
+  if(MSVC)
+    # Copy the dll
+    add_custom_target(Copy-CoMISo-DLL        # Adds a post-build event to MyTest
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libopenblas.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libopenblas.dll"
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libgcc_s_seh-1.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libgcc_s_seh-1.dll"
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libgfortran-3.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libgfortran-3.dll"
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different
+        "${COMISO_DIR}/ext/OpenBLAS-v0.2.14-Win64-int64/bin/libquadmath-0.dll"
+        "${CMAKE_CURRENT_BINARY_DIR}/libquadmath-0.dll")
+  endif(MSVC)
 
   if(LIBIGL_USE_STATIC_LIBRARY)
     include_directories(${COMISO_INCLUDE_DIRS})

+ 0 - 60
cmake/FindLIBCOMISOH.cmake

@@ -1,60 +0,0 @@
-# - Try to find the LIBCOMISO library
-# Once done this will define
-#
-#  LIBCOMISO_FOUND - system has LIBCOMISO
-#  LIBCOMISO_INCLUDE_DIR - the LIBCOMISO include directory
-#  LIBCOMISO_LIBRARY - the LIBCOMISO binary lib
-
-FIND_PATH(LIBCOMISO_INCLUDE_DIR CoMISo/Solver/ConstrainedSolver.hh
-   /usr/include
-   /usr/local/include
-   $ENV{LIBCOMISOROOT}/include
-   $ENV{LIBCOMISO_ROOT}/include
-   $ENV{LIBCOMISO_DIR}/include
-   $ENV{LIBCOMISO_DIR}/inc
-   ${PROJECT_SOURCE_DIR}/../
-   ${PROJECT_SOURCE_DIR}/../../
-   ${PROJECT_SOURCE_DIR}/../../../
-   ${PROJECT_SOURCE_DIR}/../CoMISo/
-   ${PROJECT_SOURCE_DIR}/../CoMISo/include
-   ${PROJECT_SOURCE_DIR}/../../CoMISo/
-   ${PROJECT_SOURCE_DIR}/../../CoMISo/include
-   /Users/daniele/Dropbox/igl/MIQ/src
-   /Users/olkido/Documents/igl/MIQ/src
-)
-
-SET(LIBCOMISO_FOUND "NO")
-IF (COMISO_INCLUDE_DIR)
-	SET(LIBCOMISO_FOUND "YES")
-ENDIF (COMISO_INCLUDE_DIR)
-
-
-
-if(LIBCOMISO_INCLUDE_DIR)
-
-   #message("${LIBCOMISO_INCLUDE_DIR}")
-
-   set(LIBCOMISO_INCLUDE_DIRS
-      ${LIBCOMISO_INCLUDE_DIR}
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/Solver
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/EigenSolver
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/NSolver
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/Config
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/Utils
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/QtWidgets
-      ${LIBCOMISO_INCLUDE_DIR}/CoMISo/ext/gmm-4.2/include
-      )
-
-   #message("${LIBCOMISO_INCLUDE_DIRS}")
-
-   set(LIBCOMISO_INCLUDE_DIR ${LIBCOMISO_INCLUDE_DIR})
-
-   add_definitions(-DINCLUDE_TEMPLATES)
-   message(STATUS "Found LIBCOMISO: ${LIBCOMISO_INCLUDE_DIR}")
-   set(LIBCOMISO_FOUND TRUE)
-else(LIBCOMISO_INCLUDE_DIR)
-  if(NOT LIBCOMISOH_FIND_QUIETLY)
-   message(FATAL_ERROR "could NOT find LIBCOMISO")
- endif (NOT LIBCOMISOH_FIND_QUIETLY)
-endif(LIBCOMISO_INCLUDE_DIR)

+ 11 - 22
optional/CMakeLists.txt

@@ -13,19 +13,8 @@ endif()
 
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
 
-### libIGL options: choose between header only and compiled static library
 option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" ON)
-if(LIBIGL_USE_STATIC_LIBRARY)
-  add_definitions(-DIGL_STATIC_LIBRARY)
-endif()
-
-### libIGL options: decide if you want the nanogui bar in the viewer
-option(LIBIGL_WITH_VIEWER      "Use Nanogui Viewer" OFF)
-if(LIBIGL_WITH_VIEWER)
-  add_definitions(-DIGL_VIEWER_WITH_NANOGUI)
-endif()
-
-### libIGL options: choose your dependencies (by default everything is OFF, in this example we need the viewer) ###
+option(LIBIGL_WITH_VIEWER      "Use Nanogui Viewer" ON)
 option(LIBIGL_WITH_BBW         "Use BBW"            ON)
 option(LIBIGL_WITH_EMBREE      "Use Embree"         ON)
 option(LIBIGL_WITH_OPENGL      "Use OpenGL"         ON)
@@ -33,19 +22,19 @@ option(LIBIGL_WITH_PNG         "Use PNG"            ON)
 option(LIBIGL_WITH_TETGEN      "Use Tetgen"         ON)
 option(LIBIGL_WITH_TRIANGLE    "Use Triangle"       ON)
 option(LIBIGL_WITH_XML         "Use XML"            ON)
-
-### Still need to be tested ----
-option(LIBIGL_WITH_LIM         "Use LIM"            OFF)
-option(LIBIGL_WITH_COMISO      "Use CoMiso"         OFF)
+option(LIBIGL_WITH_LIM         "Use LIM"            ON)
+option(LIBIGL_WITH_COMISO      "Use CoMiso"         ON)
 option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF)
-option(LIBIGL_WITH_CGAL        "Use CGAL"           OFF)
-#option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF)
-#option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF)
+option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF)
+option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF)
 
-### END TESTING
+option(LIBIGL_WITH_CGAL        "Use CGAL"           OFF)
+if(LIBIGL_WITH_CGAL) # Do not remove or move this block, cgal strange build system fails without it
+  find_package(CGAL REQUIRED)
+  set(CGAL_DONT_OVERRIDE_CMAKE_FLAGS TRUE CACHE BOOL "CGAL's CMAKE Setup is super annoying ")
+  include(${CGAL_USE_FILE})
+endif()
 
-### Adding libIGL: choose the path to your local copy libIGL ###
-### This is going to compile everything you requested ###
 add_subdirectory("${PROJECT_SOURCE_DIR}/../cmake" "libigl")
 
 ### ligIGL information ###

+ 15 - 19
tutorial/CMakeLists.txt

@@ -16,15 +16,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
 
 ### libIGL options: choose between header only and compiled static library
 option(LIBIGL_USE_STATIC_LIBRARY "Use LibIGL as static library" OFF)
-if(LIBIGL_USE_STATIC_LIBRARY)
-  add_definitions(-DIGL_STATIC_LIBRARY)
-endif()
-
-### libIGL options: decide if you want the nanogui bar in the viewer
-option(LIBIGL_WITH_VIEWER      "Use Nanogui Viewer" ON)
-if(LIBIGL_WITH_VIEWER)
-  add_definitions(-DIGL_VIEWER_WITH_NANOGUI)
-endif()
+option(LIBIGL_WITH_VIEWER      "Use Viewer Nanogui Bar" ON)
 
 ### libIGL options: choose your dependencies (by default everything is OFF, in this example we need the viewer) ###
 option(LIBIGL_WITH_BBW         "Use BBW"            ON)
@@ -35,23 +27,22 @@ option(LIBIGL_WITH_TETGEN      "Use Tetgen"         ON)
 option(LIBIGL_WITH_TRIANGLE    "Use Triangle"       ON)
 option(LIBIGL_WITH_XML         "Use XML"            ON)
 option(LIBIGL_WITH_LIM         "Use LIM"            ON)
+option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF) # This option is not supported yet
+option(LIBIGL_WITH_COMISO      "Use CoMiso"         ON)
 
+### Start to be tested ----
+#option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF)
+#option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF)
+### End   to be tested ----
+
+### libIGL options: decide if you want to use the functionalities that depends on cgal
 option(LIBIGL_WITH_CGAL        "Use CGAL"           ON)
-if(LIBIGL_WITH_CGAL) # Do not remove this line, cgal strange build system fails without it
+if(LIBIGL_WITH_CGAL) # Do not remove or move this block, cgal strange build system fails without it
   find_package(CGAL REQUIRED)
   set(CGAL_DONT_OVERRIDE_CMAKE_FLAGS TRUE CACHE BOOL "CGAL's CMAKE Setup is super annoying ")
   include(${CGAL_USE_FILE})
 endif()
 
-### Still need to be tested ----
-
-option(LIBIGL_WITH_COMISO      "Use CoMiso"         OFF)
-option(LIBIGL_WITH_BOOLEAN     "Use Cork boolean"   OFF)
-#option(LIBIGL_WITH_MATLAB      "Use Matlab"         OFF)
-#option(LIBIGL_WITH_MOSEK       "Use MOSEK"          OFF)
-
-### END TESTING
-
 ### Adding libIGL: choose the path to your local copy libIGL ###
 ### This is going to compile everything you requested ###
 add_subdirectory("${PROJECT_SOURCE_DIR}/../cmake" "libigl")
@@ -63,6 +54,11 @@ message("libIGL extra sources: ${LIBIGL_EXTRA_SOURCES}")
 message("libIGL extra libraries: ${LIBIGL_EXTRA_LIBRARIES}")
 message("libIGL definitions: ${LIBIGL_DEFINITIONS}")
 
+### Prepare the build environment
+
+include_directories(${LIBIGL_INCLUDE_DIRS})
+add_definitions(${LIBIGL_DEFINITIONS})
+
 ### Choose which chapters to compile ###
 option(TUTORIALS_CHAPTER1 "Compile chapter 1" ON)
 option(TUTORIALS_CHAPTER2 "Compile chapter 2" ON)