Merge pull request #1968 from qnx-ports/develop

QNX Compatibility
release/4.3a0
Frank Dellaert 2025-01-24 17:33:23 -05:00 committed by GitHub
commit b762707af4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 83 additions and 36 deletions

View File

@ -207,7 +207,8 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
endif() endif()
endif() endif()
if (NOT MSVC) if ((NOT MSVC) AND (NOT QNX))
option(GTSAM_BUILD_WITH_MARCH_NATIVE "Enable/Disable building with all instructions supported by native architecture (binary may not be portable!)" ON)
if(GTSAM_BUILD_WITH_MARCH_NATIVE) if(GTSAM_BUILD_WITH_MARCH_NATIVE)
# Check if Apple OS and compiler is [Apple]Clang # Check if Apple OS and compiler is [Apple]Clang
if(APPLE AND (${CMAKE_CXX_COMPILER_ID} MATCHES "^(Apple)?Clang$")) if(APPLE AND (${CMAKE_CXX_COMPILER_ID} MATCHES "^(Apple)?Clang$"))

View File

@ -199,7 +199,9 @@ macro(gtsamAddTestsGlob_impl groupName globPatterns excludedFiles linkLibraries)
set_property(SOURCE ${script_src} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${GTSAM_SOURCE_DIR}\"") set_property(SOURCE ${script_src} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${GTSAM_SOURCE_DIR}\"")
# Exclude from 'make all' and 'make install' # Exclude from 'make all' and 'make install'
set_target_properties(${script_name} PROPERTIES EXCLUDE_FROM_ALL ON) if(NOT QNX)
set_target_properties(${script_name} PROPERTIES EXCLUDE_FROM_ALL ON)
endif()
# Configure target folder (for MSVC and Xcode) # Configure target folder (for MSVC and Xcode)
set_property(TARGET ${script_name} PROPERTY FOLDER "Unit tests/${groupName}") set_property(TARGET ${script_name} PROPERTY FOLDER "Unit tests/${groupName}")
@ -240,7 +242,12 @@ macro(gtsamAddTestsGlob_impl groupName globPatterns excludedFiles linkLibraries)
set_property(SOURCE ${script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${GTSAM_SOURCE_DIR}\"") set_property(SOURCE ${script_srcs} APPEND PROPERTY COMPILE_DEFINITIONS "TOPSRCDIR=\"${GTSAM_SOURCE_DIR}\"")
# Exclude from 'make all' and 'make install' # Exclude from 'make all' and 'make install'
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL ON) # QNX is cross-compiled for, and does not support make, cmake, or ctest natively.
# Therefore, running tests must be done by manually copying test executables and required data files over.
# for more info, check PR#1968 https://github.com/borglab/gtsam/pull/1968
if(NOT QNX)
set_target_properties(${target_name} PROPERTIES EXCLUDE_FROM_ALL ON)
endif()
# Configure target folder (for MSVC and Xcode) # Configure target folder (for MSVC and Xcode)
set_property(TARGET ${script_name} PROPERTY FOLDER "Unit tests") set_property(TARGET ${script_name} PROPERTY FOLDER "Unit tests")

View File

@ -22,7 +22,7 @@ if(GTSAM_UNSTABLE_AVAILABLE)
print_enabled_config(${GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX} "Build MATLAB Toolbox for unstable") print_enabled_config(${GTSAM_UNSTABLE_INSTALL_MATLAB_TOOLBOX} "Build MATLAB Toolbox for unstable")
endif() endif()
if(NOT MSVC AND NOT XCODE_VERSION) if(NOT MSVC AND NOT XCODE_VERSION AND NOT QNX)
print_enabled_config(${GTSAM_BUILD_WITH_MARCH_NATIVE} "Build for native architecture ") print_enabled_config(${GTSAM_BUILD_WITH_MARCH_NATIVE} "Build for native architecture ")
print_config("Build type" "${CMAKE_BUILD_TYPE}") print_config("Build type" "${CMAKE_BUILD_TYPE}")
print_config("C compilation flags" "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") print_config("C compilation flags" "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}")

View File

@ -1,6 +1,6 @@
# Install the header files including the generated Config.h (which is in # Install the header files including the generated Config.h (which is in
# the build tree). # the build tree).
file (GLOB HEADERS [A-Za-z]*.hpp) file (GLOB HEADERS [A-Za-z]*.hpp)
install (FILES ${HEADERS} DESTINATION include/GeographicLib) install (FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GeographicLib)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/Config.h install (FILES ${CMAKE_CURRENT_BINARY_DIR}/Config.h
DESTINATION include/GeographicLib) DESTINATION include/GeographicLib)

View File

@ -20,7 +20,7 @@ set(CEPHES_HEADER_FILES
dllexport.h) dllexport.h)
# Add header files # Add header files
install(FILES ${CEPHES_HEADER_FILES} DESTINATION include/gtsam/3rdparty/cephes) install(FILES ${CEPHES_HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/3rdparty/cephes)
set(CEPHES_SOURCES set(CEPHES_SOURCES
cephes/airy.c cephes/airy.c

View File

@ -1,2 +1,2 @@
file(GLOB ceres_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h") file(GLOB ceres_headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
install(FILES ${ceres_headers} DESTINATION include/gtsam/3rdparty/ceres) install(FILES ${ceres_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/3rdparty/ceres)

View File

@ -1 +1 @@
install(FILES metis.h DESTINATION include/gtsam/3rdparty/metis) install(FILES metis.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/3rdparty/metis)

View File

@ -100,6 +100,15 @@ IF(MSVC)
ENDIF(MSVC) ENDIF(MSVC)
# Generate and install config and dllexport files # Generate and install config and dllexport files
#For config.in searches
if(QNX)
# QNX is cross-compiled for, and does not support make, cmake, or ctest natively. Additionally, space is limited in our embedded usecase.
# Therefore, running tests must be done by manually copying test executables and required data files over, preferably avoiding
# copying the whole source tree. Thus, we set the default file lookup to the recommended test folder, with the option
# to manually change it.
# for more info, check PR#1968 https://github.com/borglab/gtsam/pull/1968
set(QNX_TARGET_DATASET_DIR "/data/home/root/qnxuser/test" CACHE STRING "Path to your on-target testing folder.")
endif()
configure_file(config.h.in config.h) configure_file(config.h.in config.h)
set(library_name GTSAM) # For substitution in dllexport.h.in set(library_name GTSAM) # For substitution in dllexport.h.in
configure_file("${GTSAM_SOURCE_DIR}/cmake/dllexport.h.in" "dllexport.h") configure_file("${GTSAM_SOURCE_DIR}/cmake/dllexport.h.in" "dllexport.h")

View File

@ -1,9 +1,9 @@
# Install headers # Install headers
file(GLOB base_headers "*.h") file(GLOB base_headers "*.h")
install(FILES ${base_headers} DESTINATION include/gtsam/base) install(FILES ${base_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/base)
file(GLOB base_headers_tree "treeTraversal/*.h") file(GLOB base_headers_tree "treeTraversal/*.h")
install(FILES ${base_headers_tree} DESTINATION include/gtsam/base/treeTraversal) install(FILES ${base_headers_tree} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/base/treeTraversal)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -53,6 +53,10 @@ namespace boost { namespace serialization { struct U{}; } }
namespace std { template<> struct is_trivially_default_constructible<boost::serialization::U> : std::false_type {}; } namespace std { template<> struct is_trivially_default_constructible<boost::serialization::U> : std::false_type {}; }
namespace std { template<> struct is_trivially_copy_constructible<boost::serialization::U> : std::false_type {}; } namespace std { template<> struct is_trivially_copy_constructible<boost::serialization::U> : std::false_type {}; }
namespace std { template<> struct is_trivially_move_constructible<boost::serialization::U> : std::false_type {}; } namespace std { template<> struct is_trivially_move_constructible<boost::serialization::U> : std::false_type {}; }
// QCC (The QNX GCC-based Compiler) also has this issue, but it also extends to trivial destructor.
#if defined(__QNX__)
namespace std { template<> struct is_trivially_destructible<boost::serialization::U> : std::false_type {}; }
#endif
#endif #endif
#endif #endif

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB basis_headers "*.h") file(GLOB basis_headers "*.h")
install(FILES ${basis_headers} DESTINATION include/gtsam/basis) install(FILES ${basis_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/basis)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -26,7 +26,12 @@
// Paths to example datasets distributed with GTSAM // Paths to example datasets distributed with GTSAM
#define GTSAM_SOURCE_TREE_DATASET_DIR "@GTSAM_SOURCE_DIR@/examples/Data" #define GTSAM_SOURCE_TREE_DATASET_DIR "@GTSAM_SOURCE_DIR@/examples/Data"
#if !defined(__QNX__)
#define GTSAM_INSTALLED_DATASET_DIR "@GTSAM_TOOLBOX_INSTALL_PATH@/gtsam_examples/Data" #define GTSAM_INSTALLED_DATASET_DIR "@GTSAM_TOOLBOX_INSTALL_PATH@/gtsam_examples/Data"
#else
//Set toolbox path to the path on the target.
#define GTSAM_INSTALLED_DATASET_DIR "@QNX_TARGET_DATASET_DIR@/gtsam_examples/Data"
#endif
// Whether GTSAM is compiled to use quaternions for Rot3 (otherwise uses rotation matrices) // Whether GTSAM is compiled to use quaternions for Rot3 (otherwise uses rotation matrices)
#cmakedefine GTSAM_USE_QUATERNIONS #cmakedefine GTSAM_USE_QUATERNIONS

View File

@ -1,7 +1,8 @@
# Install headers # Install headers
set(subdir discrete) set(subdir discrete)
file(GLOB discrete_headers "*.h") file(GLOB discrete_headers "*.h")
install(FILES ${discrete_headers} DESTINATION include/gtsam/discrete) # FIXME: exclude headers
install(FILES ${discrete_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/discrete)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB geometry_headers "*.h") file(GLOB geometry_headers "*.h")
install(FILES ${geometry_headers} DESTINATION include/gtsam/geometry) install(FILES ${geometry_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/geometry)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,7 +1,7 @@
# Install headers # Install headers
set(subdir hybrid) set(subdir hybrid)
file(GLOB hybrid_headers "*.h") file(GLOB hybrid_headers "*.h")
install(FILES ${hybrid_headers} DESTINATION include/gtsam/hybrid) install(FILES ${hybrid_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/hybrid)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB inference_headers "*.h") file(GLOB inference_headers "*.h")
install(FILES ${inference_headers} DESTINATION include/gtsam/inference) install(FILES ${inference_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/inference)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -303,7 +303,7 @@ TEST(Ordering, MetisLoop) {
symbolicGraph.push_factor(0, 5); symbolicGraph.push_factor(0, 5);
// METIS // METIS
#if defined(__APPLE__) #if defined(__APPLE__) || defined(__QNX__)
{ {
Ordering actual = Ordering::Create(Ordering::METIS, symbolicGraph); Ordering actual = Ordering::Create(Ordering::METIS, symbolicGraph);
// - P( 1 0 3) // - P( 1 0 3)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB linear_headers "*.h") file(GLOB linear_headers "*.h")
install(FILES ${linear_headers} DESTINATION include/gtsam/linear) install(FILES ${linear_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/linear)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB navigation_headers "*.h") file(GLOB navigation_headers "*.h")
install(FILES ${navigation_headers} DESTINATION include/gtsam/navigation) install(FILES ${navigation_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/navigation)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,9 +1,9 @@
# Install headers # Install headers
file(GLOB nonlinear_headers "*.h") file(GLOB nonlinear_headers "*.h")
install(FILES ${nonlinear_headers} DESTINATION "include/gtsam/nonlinear") install(FILES ${nonlinear_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/nonlinear)
file(GLOB nonlinear_headers_internal "internal/*.h") file(GLOB nonlinear_headers_internal "internal/*.h")
install(FILES ${nonlinear_headers_internal} DESTINATION "include/gtsam/nonlinear/internal") install(FILES ${nonlinear_headers_internal} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/nonlinear/internal)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -32,7 +32,6 @@ using namespace std;
using namespace gtsam; using namespace gtsam;
using namespace gtsam::serializationTestHelpers; using namespace gtsam::serializationTestHelpers;
/* ************************************************************************* */ /* ************************************************************************* */
// Create GUIDs for Noisemodels // Create GUIDs for Noisemodels
BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Diagonal, "gtsam_noiseModel_Diagonal") BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Diagonal, "gtsam_noiseModel_Diagonal")
@ -153,9 +152,20 @@ TEST(Serialization, NoiseModelFactor1_backwards_compatibility) {
// Deserialize XML // Deserialize XML
PriorFactor<Pose3> factor_deserialized_xml = PriorFactor<Pose3>(); PriorFactor<Pose3> factor_deserialized_xml = PriorFactor<Pose3>();
#if !defined(__QNX__)
deserializeFromXMLFile(GTSAM_SOURCE_TREE_DATASET_DIR deserializeFromXMLFile(GTSAM_SOURCE_TREE_DATASET_DIR
"/../../gtsam/nonlinear/tests/priorFactor.xml", "/../../gtsam/nonlinear/tests/priorFactor.xml",
factor_deserialized_xml); factor_deserialized_xml);
#else
/*QNX is cross-compiled for, and does not support make, cmake, or ctest natively. Additionally, space is a large constraint on embedded systems.
* Therefore, running tests must be done by manually copying test executables and required data files over, preferably avoiding
* copying the whole source tree. Thus, we set the default file lookup to the same folder. Please copy data files to the same folder as this test.
* for more info, check PR#1968 https://github.com/borglab/gtsam/pull/1968
*/
bool c = deserializeFromXMLFile(
"priorFactor.xml",
factor_deserialized_xml);
#endif
EXPECT(assert_equal(factor, factor_deserialized_xml)); EXPECT(assert_equal(factor, factor_deserialized_xml));
#endif #endif
} }

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB sam_headers "*.h") file(GLOB sam_headers "*.h")
install(FILES ${sam_headers} DESTINATION include/gtsam/sam) install(FILES ${sam_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/sam)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB sfm_headers "*.h") file(GLOB sfm_headers "*.h")
install(FILES ${sfm_headers} DESTINATION include/gtsam/sfm) install(FILES ${sfm_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/sfm)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -4,7 +4,7 @@ set (slam_excluded_headers #"")
) )
file(GLOB slam_headers "*.h") file(GLOB slam_headers "*.h")
install(FILES ${slam_headers} DESTINATION include/gtsam/slam) install(FILES ${slam_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/slam)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB symbolic_headers "*.h") file(GLOB symbolic_headers "*.h")
install(FILES ${symbolic_headers} DESTINATION include/gtsam/symbolic) install(FILES ${symbolic_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam/symbolic)
# Build tests # Build tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -687,7 +687,7 @@ TEST(SymbolicBayesTree, COLAMDvsMETIS) {
{ {
Ordering ordering = Ordering::Create(Ordering::METIS, sfg); Ordering ordering = Ordering::Create(Ordering::METIS, sfg);
// Linux and Mac split differently when using Metis // Linux and Mac split differently when using Metis
#if defined(__APPLE__) #if defined(__APPLE__) || defined(__QNX__)
EXPECT(assert_equal(Ordering{5, 4, 2, 1, 0, 3}, ordering)); EXPECT(assert_equal(Ordering{5, 4, 2, 1, 0, 3}, ordering));
#elif defined(_WIN32) #elif defined(_WIN32)
EXPECT(assert_equal(Ordering{4, 3, 1, 0, 5, 2}, ordering)); EXPECT(assert_equal(Ordering{4, 3, 1, 0, 5, 2}, ordering));
@ -700,7 +700,7 @@ TEST(SymbolicBayesTree, COLAMDvsMETIS) {
// | | - P( 5 | 0 4) // | | - P( 5 | 0 4)
// | - P( 2 | 1 3) // | - P( 2 | 1 3)
SymbolicBayesTree expected; SymbolicBayesTree expected;
#if defined(__APPLE__) #if defined(__APPLE__) || defined(__QNX__)
expected.insertRoot( expected.insertRoot(
NodeClique(Keys(1)(0)(3), 3, NodeClique(Keys(1)(0)(3), 3,
Children( // Children( //

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB base_headers "*.h") file(GLOB base_headers "*.h")
install(FILES ${base_headers} DESTINATION include/gtsam_unstable/base) install(FILES ${base_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/base)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB discrete_headers "*.h") file(GLOB discrete_headers "*.h")
install(FILES ${discrete_headers} DESTINATION include/gtsam_unstable/discrete) install(FILES ${discrete_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/discrete)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -140,7 +140,11 @@ TEST(schedulingExample, test) {
/* ************************************************************************* */ /* ************************************************************************* */
TEST(schedulingExample, smallFromFile) { TEST(schedulingExample, smallFromFile) {
#if !defined(__QNX__)
string path(TOPSRCDIR "/gtsam_unstable/discrete/examples/"); string path(TOPSRCDIR "/gtsam_unstable/discrete/examples/");
#else
string path(""); //Same Directory
#endif
Scheduler s(2, path + "small.csv"); Scheduler s(2, path + "small.csv");
// add areas // add areas

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB dynamics_headers "*.h") file(GLOB dynamics_headers "*.h")
install(FILES ${dynamics_headers} DESTINATION include/gtsam_unstable/dynamics) install(FILES ${dynamics_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/dynamics)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB geometry_headers "*.h") file(GLOB geometry_headers "*.h")
install(FILES ${geometry_headers} DESTINATION include/gtsam_unstable/geometry) install(FILES ${geometry_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/geometry)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB linear_headers "*.h") file(GLOB linear_headers "*.h")
install(FILES ${linear_headers} DESTINATION include/gtsam_unstable/linear) install(FILES ${linear_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/linear)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,6 +1,6 @@
# Install headers # Install headers
file(GLOB nonlinear_headers "*.h") file(GLOB nonlinear_headers "*.h")
install(FILES ${nonlinear_headers} DESTINATION include/gtsam_unstable/nonlinear) install(FILES ${nonlinear_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/nonlinear)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -1,5 +1,5 @@
# Install headers # Install headers
file(GLOB partition_headers "*.h") file(GLOB partition_headers "*.h")
install(FILES ${partition_headers} DESTINATION include/gtsam_unstable/partition) install(FILES ${partition_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/partition)
add_subdirectory(tests) add_subdirectory(tests)

View File

@ -104,7 +104,13 @@ TEST ( Partition, edgePartitionByMetis2 )
graph.push_back(std::make_shared<GenericFactor3D>(1, 2, 1, NODE_POSE_3D, NODE_POSE_3D, 1)); graph.push_back(std::make_shared<GenericFactor3D>(1, 2, 1, NODE_POSE_3D, NODE_POSE_3D, 1));
graph.push_back(std::make_shared<GenericFactor3D>(2, 3, 2, NODE_POSE_3D, NODE_POSE_3D, 20)); graph.push_back(std::make_shared<GenericFactor3D>(2, 3, 2, NODE_POSE_3D, NODE_POSE_3D, 20));
graph.push_back(std::make_shared<GenericFactor3D>(3, 4, 3, NODE_POSE_3D, NODE_POSE_3D, 1)); graph.push_back(std::make_shared<GenericFactor3D>(3, 4, 3, NODE_POSE_3D, NODE_POSE_3D, 1));
//QNX Testing: fix tiebreaker to match
#if !defined(__QNX__)
std::vector<size_t> keys{0, 1, 2, 3, 4}; std::vector<size_t> keys{0, 1, 2, 3, 4};
#else
//Anything where 2 is before 0 will work.
std::vector<size_t> keys{2, 0, 3, 1, 4};
#endif
WorkSpace workspace(6); WorkSpace workspace(6);
std::optional<MetisResult> actual = edgePartitionByMetis<GenericGraph3D>(graph, keys, std::optional<MetisResult> actual = edgePartitionByMetis<GenericGraph3D>(graph, keys,

View File

@ -5,7 +5,7 @@ set (slam_excluded_headers #"")
file(GLOB slam_headers "*.h") file(GLOB slam_headers "*.h")
list(REMOVE_ITEM slam_headers ${slam_excluded_headers}) list(REMOVE_ITEM slam_headers ${slam_excluded_headers})
install(FILES ${slam_headers} DESTINATION include/gtsam_unstable/slam) install(FILES ${slam_headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable/slam)
# Add all tests # Add all tests
add_subdirectory(tests) add_subdirectory(tests)