Updated README with info about gtsam_unstable, merged cmake files

release/4.3a0
Alex Cunningham 2012-05-04 14:44:21 +00:00
parent e4bc0f9b81
commit 3d49a8b27b
4 changed files with 63 additions and 47 deletions

37
README
View File

@ -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

View File

@ -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)

View File

@ -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)