Browse Source

the tutorial now compiles all its core dependencies inside its cmake to be friendly to VS users

Former-commit-id: b8ada60b0d56edcb02b3d9bfe32dd135a8b918be
Daniele Panozzo 10 years ago
parent
commit
afca4f6dbf

+ 13 - 18
include/igl/unproject.cpp

@@ -6,12 +6,9 @@
 // v. 2.0. If a copy of the MPL was not distributed with this file, You can
 // obtain one at http://mozilla.org/MPL/2.0/.
 #include "unproject.h"
-//#ifndef IGL_NO_OPENGL
-//#ifndef IGL_OPENGL_4
 
 #include <Eigen/Dense>
 #include <Eigen/LU>
-#include "OpenGL_convenience.h"
 
 IGL_INLINE void igl::unproject(
   const double winX,
@@ -36,6 +33,10 @@ IGL_INLINE void igl::unproject(
   obj = igl::unproject(win).template cast<typename Derivedobj::Scalar>();
 }
 
+// #ifndef IGL_NO_OPENGL
+// #ifndef IGL_OPENGL_4
+#include "OpenGL_convenience.h"
+
 template <typename Derivedwin>
 IGL_INLINE Eigen::PlainObjectBase<Derivedwin> igl::unproject(
   const Eigen::PlainObjectBase<Derivedwin> & win)
@@ -54,9 +55,8 @@ IGL_INLINE Eigen::PlainObjectBase<Derivedwin> igl::unproject(
   return objd.template cast<Scalar>();
 }
 
-//#endif
-//#endif
-
+// #endif
+// #endif
 
 template <typename Scalar>
 IGL_INLINE Eigen::Matrix<Scalar,3,1> igl::unproject(
@@ -81,19 +81,14 @@ IGL_INLINE Eigen::Matrix<Scalar,3,1> igl::unproject(
 
 #ifdef IGL_STATIC_LIBRARY
 
-//#ifndef IGL_NO_OPENGL
-//#ifndef IGL_OPENGL_4
+#ifndef IGL_NO_OPENGL
+#ifndef IGL_OPENGL_4
 // Explicit template instanciation
-template void igl::unproject<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, 3, 1, 0, 3, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> >&);
-template void igl::unproject<Eigen::Matrix<float, 3, 1, 0, 3, 1>, Eigen::Matrix<float, 3, 1, 0, 3, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >&);
-template Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > igl::unproject<Eigen::Matrix<float, 3, 1, 0, 3, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> > const&);
-template void igl::unproject<Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<float, 3, 1, 0, 3, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<float, 3, 1, 0, 3, 1> >&);
-template Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > igl::unproject<Eigen::Matrix<double, 3, 1, 0, 3, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&);
-template void igl::unproject<Eigen::Matrix<double, 1, 3, 1, 1, 3>, Eigen::Matrix<double, 1, 3, 1, 1, 3> >(Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > const&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&);
-template Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > igl::unproject<Eigen::Matrix<double, 1, 3, 1, 1, 3> >(Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> > const&);
+#endif
+#endif
+
 template Eigen::Matrix<float, 3, 1, 0, 3, 1> igl::unproject<float>(Eigen::Matrix<float, 3, 1, 0, 3, 1> const&, Eigen::Matrix<float, 4, 4, 0, 4, 4> const&, Eigen::Matrix<float, 4, 4, 0, 4, 4> const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&);
-//#endif
-//template Eigen::Matrix<double, 3, 1, 0, 3, 1> igl::unproject<double>(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, Eigen::Matrix<double, 4, 4, 0, 4, 4> const&, Eigen::Matrix<double, 4, 4, 0, 4, 4> const&, Eigen::Matrix<double, 4, 1, 0, 4, 1> const&);
-//#endif
+template Eigen::Matrix<double, 3, 1, 0, 3, 1> igl::unproject<double>(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, Eigen::Matrix<double, 4, 4, 0, 4, 4> const&, Eigen::Matrix<double, 4, 4, 0, 4, 4> const&, Eigen::Matrix<double, 4, 1, 0, 4, 1> const&);
+template Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > igl::unproject<Eigen::Matrix<double, 3, 1, 0, 3, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, 3, 1, 0, 3, 1> > const&);
 
 #endif

+ 0 - 39
lib/cmake_install.cmake

@@ -1,39 +0,0 @@
-# Install script for directory: /Users/daniele/Dropbox/igl/libigl/optional
-
-# Set the install prefix
-if(NOT DEFINED CMAKE_INSTALL_PREFIX)
-  set(CMAKE_INSTALL_PREFIX "/usr/local")
-endif()
-string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-# Set the install configuration name.
-if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
-  if(BUILD_TYPE)
-    string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
-           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
-  else()
-    set(CMAKE_INSTALL_CONFIG_NAME "")
-  endif()
-  message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
-endif()
-
-# Set the component getting installed.
-if(NOT CMAKE_INSTALL_COMPONENT)
-  if(COMPONENT)
-    message(STATUS "Install component: \"${COMPONENT}\"")
-    set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
-  else()
-    set(CMAKE_INSTALL_COMPONENT)
-  endif()
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
-  set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
-else()
-  set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
-endif()
-
-string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
-       "${CMAKE_INSTALL_MANIFEST_FILES}")
-file(WRITE "/Users/daniele/Dropbox/igl/libigl/lib/${CMAKE_INSTALL_MANIFEST}"
-     "${CMAKE_INSTALL_MANIFEST_CONTENT}")

+ 5 - 4
optional/CMakeLists.txt

@@ -10,7 +10,7 @@ find_package(EIGEN REQUIRED)
 add_definitions(-DIGL_STATIC_LIBRARY)
 
 ## Check for GLFW
-find_package(GLFW QUIET)
+find_package(GLFWH QUIET)
 if (GLFW_FOUND)
   include_directories( ${GLFW_INCLUDE_DIR})
 else (GLFW_FOUND)
@@ -28,7 +28,8 @@ else (ANTTWEAKBAR_FOUND)
 endif(ANTTWEAKBAR_FOUND)
 
 ## Check for NANOGUI
-find_package(NANOGUI QUIET)
+find_package(NANOGUIH QUIET)
+#message(FATAL_ERROR "nanogui not found. ${NANOGUI_INCLUDE_DIRS}")
 if (NANOGUI_FOUND)
   include_directories( ${NANOGUI_INCLUDE_DIRS})
 else (NANOGUI_FOUND)
@@ -290,7 +291,7 @@ if (LIBCOMISO_FOUND)
 endif (LIBCOMISO_FOUND)
 
 #### Compile the viewer
-if (GLFW_FOUND AND NANOGUI_FOUND)
+if (NANOGUI_FOUND)
   file(GLOB SOURCES_VIEWER
     "${PROJECT_SOURCE_DIR}/../include/igl/viewer/*.cpp"
   )
@@ -298,7 +299,7 @@ if (GLFW_FOUND AND NANOGUI_FOUND)
   add_library(iglviewer STATIC ${SOURCES_VIEWER})
   set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} "iglviewer")
 
-endif (GLFW_FOUND AND NANOGUI_FOUND)
+endif (NANOGUI_FOUND)
 
 # Pass the list of compiled libraries to the parent
 set(LIBIGL_LIBRARIES ${LIBIGL_LIBRARIES} PARENT_SCOPE)

+ 2 - 2
tutorial/CMakeLists.shared

@@ -25,9 +25,9 @@ set(CMAKE_COLOR_MAKEFILE ON)
 
 find_package(OpenGL REQUIRED)
 find_package(EIGEN REQUIRED)
+find_package(GLFWH REQUIRED)
 #find_package(LIBIGL REQUIRED)
 #find_package(NANOGUI REQUIRED)
-find_package(GLFW REQUIRED)
 
 if(NOT APPLE)
 	find_package(GLEW REQUIRED)
@@ -99,7 +99,7 @@ set(SHARED_LIBRARIES
 #		${NANOGUI_LIBRARY}
 		${EIGEN_LIBRARIES}
 		${GLEW_LIBRARIES}
-		${GLFW_LIBRARIES}
+#		${GLFW_LIBRARIES}
 )
 
 #message(FATAL_ERROR ${SHARED_LIBRARIES})

+ 1 - 1
tutorial/CMakeLists.txt

@@ -30,7 +30,7 @@ include_directories("../include")
 add_subdirectory("../external/nanogui/" "nanogui")
 include_directories("../external/nanogui/include")
 include_directories("../external/nanogui/ext/nanovg/src")
-list(APPEND SHARED_LIBRARIES "nanogui")
+list(APPEND SHARED_LIBRARIES "nanogui" "glfw3")
 
 message(STATUS "Linking with: ${LIBIGL_LIBRARIES}")
 list(APPEND SHARED_LIBRARIES ${LIBIGL_LIBRARIES})

+ 3 - 0
tutorial/cmake/FindGLFW.cmake

@@ -17,6 +17,9 @@ FIND_PATH(GLFW_INCLUDE_DIR GLFW/glfw3.h
     ${PROJECT_SOURCE_DIR}/../../libigl/external/glfw/include
     ${PROJECT_SOURCE_DIR}/../libigl/external/glfw/include
     ${PROJECT_SOURCE_DIR}/libigl/external/glfw/include
+    ${PROJECT_SOURCE_DIR}/../../libigl/external/nanogui/ext/glfw/include
+    ${PROJECT_SOURCE_DIR}/../libigl/external/nanogui/ext/glfw/include
+    ${PROJECT_SOURCE_DIR}/libigl/external/nanogui/ext/glfw/include
     /usr/local/include
     /usr/X11/include
     /usr/include

+ 44 - 0
tutorial/cmake/FindGLFWH.cmake

@@ -0,0 +1,44 @@
+#
+# Try to find GLFW library and include path.
+# Once done this will define
+#
+# GLFW_FOUND
+# GLFW_INCLUDE_DIR
+# GLFW_LIBRARIES
+#
+
+if(NOT GLFW_FOUND)
+
+FIND_PATH(GLFW_INCLUDE_DIR GLFW/glfw3.h
+  PATHS
+    ${PROJECT_SOURCE_DIR}/../../external/glfw/include
+    ${PROJECT_SOURCE_DIR}/../external/glfw/include
+    ${PROJECT_SOURCE_DIR}/external/glfw/include
+    ${PROJECT_SOURCE_DIR}/../../libigl/external/glfw/include
+    ${PROJECT_SOURCE_DIR}/../libigl/external/glfw/include
+    ${PROJECT_SOURCE_DIR}/libigl/external/glfw/include
+    ${PROJECT_SOURCE_DIR}/../../../libigl/external/nanogui/ext/glfw/include
+    ${PROJECT_SOURCE_DIR}/../../libigl/external/nanogui/ext/glfw/include
+    ${PROJECT_SOURCE_DIR}/../libigl/external/nanogui/ext/glfw/include
+    ${PROJECT_SOURCE_DIR}/libigl/external/nanogui/ext/glfw/include
+    /usr/local/include
+    /usr/X11/include
+    /usr/include
+    /opt/local/include
+    NO_DEFAULT_PATH
+    )
+
+SET(GLFW_FOUND "NO")
+IF (GLFW_INCLUDE_DIR)
+	SET(GLFW_FOUND "YES")
+ENDIF (GLFW_INCLUDE_DIR)
+
+if(GLFW_FOUND)
+  message(STATUS "Found GLFW: ${GLFW_INCLUDE_DIR} -- HEADERS ONLY")
+else(GLFW_FOUND)
+  if (NOT GLFW_FIND_QUIETLY)
+    message(FATAL_ERROR "could NOT find GLFW")
+  endif (NOT GLFW_FIND_QUIETLY)
+endif(GLFW_FOUND)
+
+endif(NOT GLFW_FOUND)

+ 1 - 0
tutorial/cmake/FindNANOGUI.cmake

@@ -54,6 +54,7 @@ IF (NANOGUI_INCLUDE_DIR AND NANOGUI_LIBRARY)
   SET(NANOGUI_INCLUDE_DIRS
          ${NANOGUI_INCLUDE_DIR}
          ${NANOGUI_INCLUDE_DIR}/../ext/nanovg/src
+         ${NANOGUI_INCLUDE_DIR}/../ext/glfw/include
          )
 
 ENDIF (NANOGUI_INCLUDE_DIR AND NANOGUI_LIBRARY)

+ 46 - 0
tutorial/cmake/FindNANOGUIH.cmake

@@ -0,0 +1,46 @@
+#
+# Try to find NANOGUI library and include path.
+# Once done this will define
+#
+# NANOGUI_FOUND
+# NANOGUI_INCLUDE_DIR
+# NANOGUI_LIBRARY
+#
+
+if(NOT NANOGUI_FOUND)
+
+FIND_PATH(NANOGUI_INCLUDE_DIR nanogui/nanogui.h
+  PATHS
+    ${PROJECT_SOURCE_DIR}/../../external/nanogui/include
+    ${PROJECT_SOURCE_DIR}/../external/nanogui/include
+    ${PROJECT_SOURCE_DIR}/external/nanogui/include
+    ${PROJECT_SOURCE_DIR}/../../libigl/external/nanogui/include
+    ${PROJECT_SOURCE_DIR}/../libigl/external/nanogui/include
+    ${PROJECT_SOURCE_DIR}/libigl/external/nanogui/include
+    /usr/local/include
+    /usr/X11/include
+    /usr/include
+    /opt/local/include
+    NO_DEFAULT_PATH
+    )
+
+SET(NANOGUI_FOUND "NO")
+IF (NANOGUI_INCLUDE_DIR)
+	SET(NANOGUI_FOUND "YES")
+  SET(NANOGUI_INCLUDE_DIRS
+         ${NANOGUI_INCLUDE_DIR}
+         ${NANOGUI_INCLUDE_DIR}/../ext/nanovg/src
+         ${NANOGUI_INCLUDE_DIR}/../ext/glfw/include
+         )
+
+ENDIF (NANOGUI_INCLUDE_DIR)
+
+if(NANOGUI_FOUND)
+  message(STATUS "Found NANOGUI: ${NANOGUI_INCLUDE_DIR} -- HEADERS ONLY")
+else(NANOGUI_FOUND)
+  if (NOT NANOGUI_FIND_QUIETLY)
+    message(FATAL_ERROR "could NOT find NANOGUI")
+  endif (NOT NANOGUI_FIND_QUIETLY)
+endif(NANOGUI_FOUND)
+
+endif(NOT NANOGUI_FOUND)