diff --git a/gtsam/3rdparty/CMakeLists.txt b/gtsam/3rdparty/CMakeLists.txt index 31947838d..f77454b9b 100644 --- a/gtsam/3rdparty/CMakeLists.txt +++ b/gtsam/3rdparty/CMakeLists.txt @@ -15,16 +15,17 @@ if(NOT GTSAM_USE_SYSTEM_EIGEN) install(FILES Eigen/Eigen/${filename} DESTINATION include/gtsam/3rdparty/Eigen/Eigen) endif() endforeach(eigen_dir) - + # Add to project source set(eigen_headers ${eigen_headers} PARENT_SCOPE) - + # install Eigen - only the headers in our 3rdparty directory - install(DIRECTORY Eigen/Eigen + install(DIRECTORY Eigen/Eigen DESTINATION include/gtsam/3rdparty/Eigen FILES_MATCHING PATTERN "*.h") endif() +option(GTSAM_BUILD_METIS_EXECUTABLES "Build metis library executables" OFF) add_subdirectory(metis-5.1.0) ############ NOTE: When updating GeographicLib be sure to disable building their examples ############ and unit tests by commenting out their lines: diff --git a/gtsam/3rdparty/metis-5.1.0/CMakeLists.txt b/gtsam/3rdparty/metis-5.1.0/CMakeLists.txt index 4c4ecf566..ceeb5d2aa 100644 --- a/gtsam/3rdparty/metis-5.1.0/CMakeLists.txt +++ b/gtsam/3rdparty/metis-5.1.0/CMakeLists.txt @@ -1,6 +1,11 @@ cmake_minimum_required(VERSION 2.8) project(METIS) +# Add flags for currect directory and below +add_definitions(-Wno-unused-variable) +add_definitions(-Wno-unknown-pragmas) +add_definitions(-Wno-sometimes-uninitialized) + set(GKLIB_PATH ${PROJECT_SOURCE_DIR}/GKlib CACHE PATH "path to GKlib") set(SHARED FALSE CACHE BOOL "build a shared library") @@ -24,4 +29,7 @@ include_directories(include) # Recursively look for CMakeLists.txt in subdirs. add_subdirectory("include") add_subdirectory("libmetis") -add_subdirectory("programs") + +if(GTSAM_BUILD_METIS_EXECUTABLES) + add_subdirectory("programs") +endif() diff --git a/gtsam_unstable/dynamics/PoseRTV.cpp b/gtsam_unstable/dynamics/PoseRTV.cpp index 4645af781..2246baee1 100644 --- a/gtsam_unstable/dynamics/PoseRTV.cpp +++ b/gtsam_unstable/dynamics/PoseRTV.cpp @@ -15,7 +15,6 @@ namespace gtsam { using namespace std; static const Vector g = delta(3, 2, 9.81); -const double pi = M_PI; /* ************************************************************************* */ double bound(double a, double min, double max) { diff --git a/gtsam_unstable/partition/GenericGraph.cpp b/gtsam_unstable/partition/GenericGraph.cpp index 1ee462728..aca916a04 100644 --- a/gtsam_unstable/partition/GenericGraph.cpp +++ b/gtsam_unstable/partition/GenericGraph.cpp @@ -29,11 +29,10 @@ namespace gtsam { namespace partition { typedef map Connections; // create disjoin set forest - int numNodes = keys.size(); DSFVector dsf(workspace.dsf, keys); FactorList factors(graph.begin(), graph.end()); - size_t i, nrFactors = factors.size(); + size_t nrFactors = factors.size(); FactorList::iterator itEnd; workspace.prepareDictionary(keys); while (nrFactors) { @@ -135,7 +134,7 @@ namespace gtsam { namespace partition { typedef list FactorList; FactorList factors(graph.begin(), graph.end()); - size_t i, nrFactors = factors.size(); + size_t nrFactors = factors.size(); FactorList::iterator itEnd; while (nrFactors) { @@ -225,7 +224,7 @@ namespace gtsam { namespace partition { // find singular cameras and landmarks foundSingularCamera = false; foundSingularLandmark = false; - for (int i=0; i > findIslands(const GenericGraph3D& graph, const vector& keys, WorkSpace& workspace, - const int minNrConstraintsPerCamera, const int minNrConstraintsPerLandmark) { + const size_t minNrConstraintsPerCamera, const size_t minNrConstraintsPerLandmark) { // create disjoint set forest workspace.prepareDictionary(keys); @@ -320,7 +319,7 @@ namespace gtsam { namespace partition { } // sanity check - int nrKeys = 0; + size_t nrKeys = 0; BOOST_FOREACH(const vector& island, islands) nrKeys += island.size(); if (nrKeys != keys.size()) { @@ -336,7 +335,7 @@ namespace gtsam { namespace partition { /* ************************************************************************* */ // return the number of intersection between two **sorted** landmark vectors inline int getNrCommonLandmarks(const vector& landmarks1, const vector& landmarks2){ - int i1 = 0, i2 = 0; + size_t i1 = 0, i2 = 0; int nrCommonLandmarks = 0; while (i1 < landmarks1.size() && i2 < landmarks2.size()) { if (landmarks1[i1] < landmarks2[i2]) @@ -392,8 +391,8 @@ namespace gtsam { namespace partition { int factorIndex = 0; int camera1, camera2, nrTotalConstraints; bool hasOdometry; - for (int i1=0; i1& frontals, - WorkSpace& workspace, const int minNrConstraintsPerCamera, const int minNrConstraintsPerLandmark) { + WorkSpace& workspace, const size_t minNrConstraintsPerCamera, const size_t minNrConstraintsPerLandmark) { workspace.prepareDictionary(frontals); vector nrConstraints(workspace.dictionary.size(), 0); @@ -445,8 +444,8 @@ namespace gtsam { namespace partition { // find the minimum constraint for cameras and landmarks size_t minFoundConstraintsPerCamera = 10000; size_t minFoundConstraintsPerLandmark = 10000; - - for (int i=0; i > findIslands(const GenericGraph3D& graph, const std::vector& keys, WorkSpace& workspace, - const int minNrConstraintsPerCamera, const int minNrConstraintsPerLandmark); + const size_t minNrConstraintsPerCamera, const size_t minNrConstraintsPerLandmark); /** eliminate the sensors from generic graph */ void reduceGenericGraph(const GenericGraph3D& graph, const std::vector& cameraKeys, const std::vector& landmarkKeys, @@ -104,7 +104,7 @@ namespace gtsam { namespace partition { /** check whether the 3D graph is singular (under constrained) */ void checkSingularity(const GenericGraph3D& graph, const std::vector& frontals, - WorkSpace& workspace, const int minNrConstraintsPerCamera, const int minNrConstraintsPerLandmark); + WorkSpace& workspace, const size_t minNrConstraintsPerCamera, const size_t minNrConstraintsPerLandmark); /** print the graph **/