Updated README with info about gtsam_unstable, merged cmake files
							parent
							
								
									e4bc0f9b81
								
							
						
					
					
						commit
						3d49a8b27b
					
				
							
								
								
									
										41
									
								
								README
								
								
								
								
							
							
						
						
									
										41
									
								
								README
								
								
								
								
							|  | @ -11,7 +11,10 @@ What is GTSAM ? | |||
| GTSAM is not (yet) open source: See COPYING & LICENSE | ||||
| 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 | ||||
|   base          provides some base Math and data structures, as well as test-related utilities | ||||
|  | @ -20,7 +23,13 @@ The code is organized according to the following directory structure: | |||
|   linear        inference specialized to Gaussian linear case, GaussianFactorGraph etc... | ||||
|   nonlinear     non-linear factor graphs and non-linear optimization | ||||
|   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  | ||||
| of licensing in LICENSE and as follows:  | ||||
|   - CCOLAMD 2.73: Tim Davis' constrained column approximate minimum degree ordering library | ||||
|  | @ -28,11 +37,10 @@ of licensing in LICENSE and as follows: | |||
|     - Licenced under LGPL v2.1, provided in gtsam/3rdparty/CCOLAMD/Doc/lesser.txt | ||||
|   - Eigen 3.0.5:  General C++ matrix and linear algebra library | ||||
|     - 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:   | ||||
|    | ||||
|   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 | ||||
|   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,  | ||||
|   				 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) | ||||
|   Debug (default)  All error checking options on, no optimization. Use for development. | ||||
|   Release          Optimizations turned on, no debug symbols.            | ||||
|  | @ -176,12 +194,13 @@ Running "make install" will install the library to the prefix location. | |||
| 
 | ||||
| Check | ||||
| 
 | ||||
| As with autotools, "make check" will build and run all of the tests. You can also  | ||||
| run "make timing" to build all of the timing scripts. To run check on a particular  | ||||
| subsection, there is a convention of "make check.[subfolder]", so to run just the  | ||||
| geometry tests, 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".  | ||||
| As with autotools, "make check" will build and run all of the tests. Note that the  | ||||
| tests will only be built when using the "check" targets, to prevent "make install" from | ||||
| building the tests unnecessarily. You can also run "make timing" to build all of  | ||||
| the timing scripts. To run check on a particular subsection, there is a convention  | ||||
| of "make check.[subfolder]", so to run just the geometry tests,  | ||||
| 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  | ||||
| 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) | ||||
| 
 | ||||
| # Wrap version for gtsam_unstable | ||||
| if (GTSAM_BUILD_WRAP) | ||||
|     add_subdirectory(wrap) | ||||
| endif(GTSAM_BUILD_WRAP) | ||||
| 
 | ||||
| # Versions - same as core gtsam library | ||||
| set(gtsam_unstable_version   ${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}) | ||||
| 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 ) | ||||
| 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