diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 7123d6eeaa..f8e73f39fc 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -136,3 +136,7 @@ jobs: cmake --build build -j4 --config ${{ matrix.build_type }} --target check.nonlinear_unstable cmake --build build -j4 --config ${{ matrix.build_type }} --target check.slam_unstable cmake --build build -j4 --config ${{ matrix.build_type }} --target check.partition + + - name: Test + run: | + cmake --build build -j4 --config ${{ matrix.build_type }} --target check diff --git a/CMakeLists.txt b/CMakeLists.txt index ebe27443ae..f70089aca8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,14 @@ set (CMAKE_PROJECT_VERSION_MAJOR ${GTSAM_VERSION_MAJOR}) set (CMAKE_PROJECT_VERSION_MINOR ${GTSAM_VERSION_MINOR}) set (CMAKE_PROJECT_VERSION_PATCH ${GTSAM_VERSION_PATCH}) +if(MSVC) + set(MSVC_LINKER_FLAGS "/FORCE:MULTIPLE") + set(CMAKE_EXE_LINKER_FLAGS ${MSVC_LINKER_FLAGS}) + set(CMAKE_MODULE_LINKER_FLAGS ${MSVC_LINKER_FLAGS}) + set(CMAKE_SHARED_LINKER_FLAGS ${MSVC_LINKER_FLAGS}) + set(CMAKE_STATIC_LINKER_FLAGS ${MSVC_LINKER_FLAGS}) +endif() + ############################################################################### # Gather information, perform checks, set defaults diff --git a/gtsam/inference/Ordering.h b/gtsam/inference/Ordering.h index 574a4c19b1..57b588edae 100644 --- a/gtsam/inference/Ordering.h +++ b/gtsam/inference/Ordering.h @@ -30,7 +30,7 @@ namespace gtsam { -class Ordering: public KeyVector { +class GTSAM_EXPORT Ordering: public KeyVector { protected: typedef KeyVector Base; @@ -45,7 +45,6 @@ class Ordering: public KeyVector { typedef std::shared_ptr shared_ptr; ///< shared_ptr to this class /// Create an empty ordering - GTSAM_EXPORT Ordering() { } @@ -71,11 +70,9 @@ class Ordering: public KeyVector { * @param keys The key vector to append to this ordering. * @return The ordering variable with appended keys. */ - GTSAM_EXPORT This& operator+=(KeyVector& keys); /// Check if key exists in ordering. - GTSAM_EXPORT bool contains(const Key& key) const; /** @@ -101,7 +98,7 @@ class Ordering: public KeyVector { } /// Compute a fill-reducing ordering using COLAMD from a VariableIndex. - static GTSAM_EXPORT Ordering Colamd(const VariableIndex& variableIndex); + static Ordering Colamd(const VariableIndex& variableIndex); /// Compute a fill-reducing ordering using constrained COLAMD from a factor graph (see details /// for note on performance). This internally builds a VariableIndex so if you already have a @@ -126,7 +123,7 @@ class Ordering: public KeyVector { /// variables in \c constrainLast will be ordered in the same order specified in the KeyVector /// \c constrainLast. If \c forceOrder is false, the variables in \c constrainLast will be /// ordered after all the others, but will be rearranged by CCOLAMD to reduce fill-in as well. - static GTSAM_EXPORT Ordering ColamdConstrainedLast( + static Ordering ColamdConstrainedLast( const VariableIndex& variableIndex, const KeyVector& constrainLast, bool forceOrder = false); @@ -154,7 +151,7 @@ class Ordering: public KeyVector { /// KeyVector \c constrainFirst. If \c forceOrder is false, the variables in \c /// constrainFirst will be ordered before all the others, but will be rearranged by CCOLAMD to /// reduce fill-in as well. - static GTSAM_EXPORT Ordering ColamdConstrainedFirst( + static Ordering ColamdConstrainedFirst( const VariableIndex& variableIndex, const KeyVector& constrainFirst, bool forceOrder = false); @@ -183,7 +180,7 @@ class Ordering: public KeyVector { /// appear in \c groups in arbitrary order. Any variables not present in \c groups will be /// assigned to group 0. This function simply fills the \c cmember argument to CCOLAMD with the /// supplied indices, see the CCOLAMD documentation for more information. - static GTSAM_EXPORT Ordering ColamdConstrained( + static Ordering ColamdConstrained( const VariableIndex& variableIndex, const FastMap& groups); /// Return a natural Ordering. Typically used by iterative solvers @@ -197,11 +194,11 @@ class Ordering: public KeyVector { /// METIS Formatting function template - static GTSAM_EXPORT void CSRFormat(std::vector& xadj, + static void CSRFormat(std::vector& xadj, std::vector& adj, const FACTOR_GRAPH& graph); /// Compute an ordering determined by METIS from a VariableIndex - static GTSAM_EXPORT Ordering Metis(const MetisIndex& met); + static Ordering Metis(const MetisIndex& met); template static Ordering Metis(const FACTOR_GRAPH& graph) { @@ -243,18 +240,16 @@ class Ordering: public KeyVector { /// @name Testable /// @{ - GTSAM_EXPORT void print(const std::string& str = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const; - GTSAM_EXPORT bool equals(const Ordering& other, double tol = 1e-9) const; /// @} private: /// Internal COLAMD function - static GTSAM_EXPORT Ordering ColamdConstrained( + static Ordering ColamdConstrained( const VariableIndex& variableIndex, std::vector& cmember); #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION