Updated README with info about gtsam_unstable, merged cmake files
parent
e4bc0f9b81
commit
3d49a8b27b
37
README
37
README
|
@ -11,7 +11,10 @@ What is GTSAM ?
|
||||||
GTSAM is not (yet) open source: See COPYING & LICENSE
|
GTSAM is not (yet) open source: See COPYING & LICENSE
|
||||||
Please see USAGE for an example on how to use GTSAM.
|
Please see USAGE for an example on how to use GTSAM.
|
||||||
|
|
||||||
The code is organized according to the following directory structure:
|
The core GTSAM code within the folder gtsam, with source, headers, and
|
||||||
|
unit tests. After building, this will generate a single library "libgtsam"
|
||||||
|
|
||||||
|
The libgtsam code is organized according to the following directory structure:
|
||||||
|
|
||||||
3rdparty local copies of third party libraries - Eigen3 and CCOLAMD
|
3rdparty local copies of third party libraries - Eigen3 and CCOLAMD
|
||||||
base provides some base Math and data structures, as well as test-related utilities
|
base provides some base Math and data structures, as well as test-related utilities
|
||||||
|
@ -21,6 +24,12 @@ The code is organized according to the following directory structure:
|
||||||
nonlinear non-linear factor graphs and non-linear optimization
|
nonlinear non-linear factor graphs and non-linear optimization
|
||||||
slam SLAM and visual SLAM application code
|
slam SLAM and visual SLAM application code
|
||||||
|
|
||||||
|
Additionally, in the SVN development version of GTSAM, there is an area for
|
||||||
|
unstable code directly under development in the folder gtsam_unstable, which contains
|
||||||
|
a directory structuring mirroring the libgtsam structure as necessary. This section produces
|
||||||
|
a single library "libgtsam_unstable". Building of gtsam_unstable is disabled by default, see
|
||||||
|
CMake configuration options for information on enabling building.
|
||||||
|
|
||||||
This library contains unchanged copies of two third party libraries, with documentation
|
This library contains unchanged copies of two third party libraries, with documentation
|
||||||
of licensing in LICENSE and as follows:
|
of licensing in LICENSE and as follows:
|
||||||
- CCOLAMD 2.73: Tim Davis' constrained column approximate minimum degree ordering library
|
- CCOLAMD 2.73: Tim Davis' constrained column approximate minimum degree ordering library
|
||||||
|
@ -29,10 +38,9 @@ of licensing in LICENSE and as follows:
|
||||||
- Eigen 3.0.5: General C++ matrix and linear algebra library
|
- Eigen 3.0.5: General C++ matrix and linear algebra library
|
||||||
- Licenced under LGPL v3, provided in gtsam/3rdparty/Eigen/COPYING.LGPL
|
- Licenced under LGPL v3, provided in gtsam/3rdparty/Eigen/COPYING.LGPL
|
||||||
|
|
||||||
All of the above contain code and tests, and produce a single library libgtsam.
|
|
||||||
After this is built, you can also run the more involved tests, which test the entire library:
|
After this is built, you can also run the more involved tests, which test the entire library:
|
||||||
|
|
||||||
tests more involved tests that depend on slam
|
tests More involved unit tests that depend on slam
|
||||||
examples Demo applications as a tutorial for using gtsam
|
examples Demo applications as a tutorial for using gtsam
|
||||||
cmake CMake scripts used within the library, as well as for finding GTSAM by dependent projects
|
cmake CMake scripts used within the library, as well as for finding GTSAM by dependent projects
|
||||||
|
|
||||||
|
@ -158,6 +166,16 @@ $] cmake -DGTSAM_BUILD_CONVENIENCE_LIBRARIES:OPTION=ON ..
|
||||||
link all of the tests at once. This option is best for users of GTSAM,
|
link all of the tests at once. This option is best for users of GTSAM,
|
||||||
as it avoids rebuilding the entirety of gtsam an extra time.
|
as it avoids rebuilding the entirety of gtsam an extra time.
|
||||||
|
|
||||||
|
GTSAM_BUILD_UNSTABLE: Enable build and install for libgtsam_unstable library.
|
||||||
|
Set with the command line as follows:
|
||||||
|
$] cmake -DGTSAM_BUILD_UNSTABLE:OPTION=ON ..
|
||||||
|
ON When enabled, libgtsam_unstable will be built and installed with the
|
||||||
|
same options as libgtsam. In addition, if tests are enabled, the
|
||||||
|
unit tests will be built as well. The Matlab toolbox will also
|
||||||
|
be generated if the matlab toolbox is enabled, installing into a
|
||||||
|
folder called "gtsam_unstable".
|
||||||
|
OFF (Default) If disabled, no gtsam_unstable code will be included in build or install.
|
||||||
|
|
||||||
CMAKE_BUILD_TYPE: We support several build configurations for GTSAM (case insensitive)
|
CMAKE_BUILD_TYPE: We support several build configurations for GTSAM (case insensitive)
|
||||||
Debug (default) All error checking options on, no optimization. Use for development.
|
Debug (default) All error checking options on, no optimization. Use for development.
|
||||||
Release Optimizations turned on, no debug symbols.
|
Release Optimizations turned on, no debug symbols.
|
||||||
|
@ -176,12 +194,13 @@ Running "make install" will install the library to the prefix location.
|
||||||
|
|
||||||
Check
|
Check
|
||||||
|
|
||||||
As with autotools, "make check" will build and run all of the tests. You can also
|
As with autotools, "make check" will build and run all of the tests. Note that the
|
||||||
run "make timing" to build all of the timing scripts. To run check on a particular
|
tests will only be built when using the "check" targets, to prevent "make install" from
|
||||||
subsection, there is a convention of "make check.[subfolder]", so to run just the
|
building the tests unnecessarily. You can also run "make timing" to build all of
|
||||||
geometry tests, run "make check.geometry". Individual tests can be run by
|
the timing scripts. To run check on a particular subsection, there is a convention
|
||||||
appending ".run" to the name of the test, for example, to run testMatrix,
|
of "make check.[subfolder]", so to run just the geometry tests,
|
||||||
run "make testMatrix.run".
|
run "make check.geometry". Individual tests can be run by appending ".run" to the
|
||||||
|
name of the test, for example, to run testMatrix, run "make testMatrix.run".
|
||||||
|
|
||||||
The make target "wrap" will build the wrap binary, and the "wrap_gtsam" target will
|
The make target "wrap" will build the wrap binary, and the "wrap_gtsam" target will
|
||||||
generate code for the toolbox. By default, the toolbox will be created and installed
|
generate code for the toolbox. By default, the toolbox will be created and installed
|
||||||
|
|
|
@ -31,11 +31,6 @@ set(gtsam_unstable_srcs
|
||||||
|
|
||||||
option (GTSAM_UNSTABLE_BUILD_SHARED_LIBRARY "Enable/Disable building of a shared version of gtsam_unstable" ON)
|
option (GTSAM_UNSTABLE_BUILD_SHARED_LIBRARY "Enable/Disable building of a shared version of gtsam_unstable" ON)
|
||||||
|
|
||||||
# Wrap version for gtsam_unstable
|
|
||||||
if (GTSAM_BUILD_WRAP)
|
|
||||||
add_subdirectory(wrap)
|
|
||||||
endif(GTSAM_BUILD_WRAP)
|
|
||||||
|
|
||||||
# Versions - same as core gtsam library
|
# Versions - same as core gtsam library
|
||||||
set(gtsam_unstable_version ${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH})
|
set(gtsam_unstable_version ${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH})
|
||||||
set(gtsam_unstable_soversion ${GTSAM_VERSION_MAJOR})
|
set(gtsam_unstable_soversion ${GTSAM_VERSION_MAJOR})
|
||||||
|
@ -63,3 +58,36 @@ if (GTSAM_UNSTABLE_BUILD_SHARED_LIBRARY)
|
||||||
install(TARGETS gtsam_unstable-shared LIBRARY DESTINATION lib )
|
install(TARGETS gtsam_unstable-shared LIBRARY DESTINATION lib )
|
||||||
endif(GTSAM_UNSTABLE_BUILD_SHARED_LIBRARY)
|
endif(GTSAM_UNSTABLE_BUILD_SHARED_LIBRARY)
|
||||||
|
|
||||||
|
# Wrap version for gtsam_unstable
|
||||||
|
if (GTSAM_BUILD_WRAP)
|
||||||
|
# Set up codegen
|
||||||
|
include(GtsamMatlabWrap)
|
||||||
|
|
||||||
|
# Wrap codegen
|
||||||
|
#usage: wrap mexExtension interfacePath moduleName toolboxPath
|
||||||
|
# mexExtension : OS/CPU-dependent extension for MEX binaries
|
||||||
|
# interfacePath : *absolute* path to directory of module interface file
|
||||||
|
# moduleName : the name of the module, interface file must be called moduleName.h
|
||||||
|
# toolboxPath : the directory in which to generate the wrappers
|
||||||
|
# [mexFlags] : extra flags for the mex command
|
||||||
|
|
||||||
|
# TODO: generate these includes programmatically
|
||||||
|
set(mexFlags "-I${Boost_INCLUDE_DIR} -I${Wrap_INCLUDE_DIR} -I${CMAKE_INSTALL_PREFIX}/include/gtsam_unstable -I${CMAKE_INSTALL_PREFIX}/include/gtsam_unstable/dynamics -I${CMAKE_INSTALL_PREFIX}/include/gtsam_unstable/discrete -L${CMAKE_INSTALL_PREFIX}/lib -lgtsam -lgtsam_unstable")
|
||||||
|
set(toolbox_path ${CMAKE_BINARY_DIR}/wrap/gtsam_unstable)
|
||||||
|
set(moduleName gtsam_unstable)
|
||||||
|
|
||||||
|
find_mexextension()
|
||||||
|
|
||||||
|
# Code generation command
|
||||||
|
add_custom_target(wrap_gtsam_unstable ALL COMMAND
|
||||||
|
${CMAKE_BINARY_DIR}/wrap/wrap ${GTSAM_MEX_BIN_EXTENSION} ${CMAKE_CURRENT_SOURCE_DIR} ${moduleName} ${toolbox_path} "${mexFlags}"
|
||||||
|
DEPENDS wrap)
|
||||||
|
|
||||||
|
if (GTSAM_INSTALL_MATLAB_TOOLBOX)
|
||||||
|
# Primary toolbox files
|
||||||
|
message(STATUS "Installing Matlab Toolbox to ${GTSAM_TOOLBOX_INSTALL_PATH}")
|
||||||
|
install(DIRECTORY DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH}) # make an empty folder
|
||||||
|
# exploit need for trailing slash to specify a full folder, rather than just its contents to copy
|
||||||
|
install(DIRECTORY ${toolbox_path} DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH})
|
||||||
|
endif (GTSAM_INSTALL_MATLAB_TOOLBOX)
|
||||||
|
endif(GTSAM_BUILD_WRAP)
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
|
|
||||||
# Set up codegen
|
|
||||||
include(GtsamMatlabWrap)
|
|
||||||
|
|
||||||
# Wrap codegen
|
|
||||||
#usage: wrap mexExtension interfacePath moduleName toolboxPath
|
|
||||||
# mexExtension : OS/CPU-dependent extension for MEX binaries
|
|
||||||
# interfacePath : *absolute* path to directory of module interface file
|
|
||||||
# moduleName : the name of the module, interface file must be called moduleName.h
|
|
||||||
# toolboxPath : the directory in which to generate the wrappers
|
|
||||||
# [mexFlags] : extra flags for the mex command
|
|
||||||
|
|
||||||
# TODO: generate these includes programmatically
|
|
||||||
set(mexFlags "-I${Boost_INCLUDE_DIR} -I${Wrap_INCLUDE_DIR} -I${CMAKE_INSTALL_PREFIX}/include/gtsam_unstable -I${CMAKE_INSTALL_PREFIX}/include/gtsam_unstable/dynamics -I${CMAKE_INSTALL_PREFIX}/include/gtsam_unstable/discrete -L${CMAKE_INSTALL_PREFIX}/lib -lgtsam -lgtsam_unstable")
|
|
||||||
set(toolbox_path ${CMAKE_BINARY_DIR}/wrap/gtsam_unstable)
|
|
||||||
set(moduleName gtsam_unstable)
|
|
||||||
|
|
||||||
find_mexextension()
|
|
||||||
|
|
||||||
# Code generation command
|
|
||||||
add_custom_target(wrap_gtsam_unstable ALL COMMAND
|
|
||||||
${CMAKE_BINARY_DIR}/wrap/wrap ${GTSAM_MEX_BIN_EXTENSION} ${CMAKE_CURRENT_SOURCE_DIR} ${moduleName} ${toolbox_path} "${mexFlags}"
|
|
||||||
DEPENDS wrap)
|
|
||||||
|
|
||||||
if (GTSAM_INSTALL_MATLAB_TOOLBOX)
|
|
||||||
# Primary toolbox files
|
|
||||||
message(STATUS "Installing Matlab Toolbox to ${GTSAM_TOOLBOX_INSTALL_PATH}")
|
|
||||||
install(DIRECTORY DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH}) # make an empty folder
|
|
||||||
# exploit need for trailing slash to specify a full folder, rather than just its contents to copy
|
|
||||||
install(DIRECTORY ${toolbox_path} DESTINATION ${GTSAM_TOOLBOX_INSTALL_PATH})
|
|
||||||
endif (GTSAM_INSTALL_MATLAB_TOOLBOX)
|
|
Loading…
Reference in New Issue