179 lines
5.7 KiB
CMake
179 lines
5.7 KiB
CMake
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
|
SET(CMAKE_LEGACY_CYGWIN_WIN32 0)
|
|
|
|
PROJECT(g2o)
|
|
|
|
SET(g2o_C_FLAGS)
|
|
SET(g2o_CXX_FLAGS)
|
|
|
|
# default built type
|
|
IF(NOT CMAKE_BUILD_TYPE)
|
|
SET(CMAKE_BUILD_TYPE Release)
|
|
ENDIF()
|
|
|
|
MESSAGE(STATUS "BUILD TYPE:" ${CMAKE_BUILD_TYPE})
|
|
|
|
SET (G2O_LIB_TYPE SHARED)
|
|
|
|
# There seems to be an issue with MSVC8
|
|
# see http://eigen.tuxfamily.org/bz/show_bug.cgi?id=83
|
|
if(MSVC90)
|
|
add_definitions(-DEIGEN_DONT_ALIGN_STATICALLY=1)
|
|
message(STATUS "Disabling memory alignment for MSVC8")
|
|
endif(MSVC90)
|
|
|
|
# Set the output directory for the build executables and libraries
|
|
IF(WIN32)
|
|
SET(g2o_LIBRARY_OUTPUT_DIRECTORY ${g2o_SOURCE_DIR}/bin CACHE PATH "Target for the libraries")
|
|
ELSE(WIN32)
|
|
SET(g2o_LIBRARY_OUTPUT_DIRECTORY ${g2o_SOURCE_DIR}/lib CACHE PATH "Target for the libraries")
|
|
ENDIF(WIN32)
|
|
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${g2o_LIBRARY_OUTPUT_DIRECTORY})
|
|
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${g2o_LIBRARY_OUTPUT_DIRECTORY})
|
|
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${g2o_RUNTIME_OUTPUT_DIRECTORY})
|
|
|
|
# Set search directory for looking for our custom CMake scripts to
|
|
# look for SuiteSparse, QGLViewer, and Eigen3.
|
|
LIST(APPEND CMAKE_MODULE_PATH ${g2o_SOURCE_DIR}/cmake_modules)
|
|
|
|
# Detect OS and define macros appropriately
|
|
IF(UNIX)
|
|
ADD_DEFINITIONS(-DUNIX)
|
|
MESSAGE(STATUS "Compiling on Unix")
|
|
ENDIF(UNIX)
|
|
|
|
# Eigen library parallelise itself, though, presumably due to performance issues
|
|
# OPENMP is experimental. We experienced some slowdown with it
|
|
FIND_PACKAGE(OpenMP)
|
|
SET(G2O_USE_OPENMP OFF CACHE BOOL "Build g2o with OpenMP support (EXPERIMENTAL)")
|
|
IF(OPENMP_FOUND AND G2O_USE_OPENMP)
|
|
SET (G2O_OPENMP 1)
|
|
SET(g2o_C_FLAGS "${g2o_C_FLAGS} ${OpenMP_C_FLAGS}")
|
|
SET(g2o_CXX_FLAGS "${g2o_CXX_FLAGS} -DEIGEN_DONT_PARALLELIZE ${OpenMP_CXX_FLAGS}")
|
|
MESSAGE(STATUS "Compiling with OpenMP support")
|
|
ENDIF(OPENMP_FOUND AND G2O_USE_OPENMP)
|
|
|
|
# Compiler specific options for gcc
|
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native")
|
|
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march=native")
|
|
# SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
|
|
# SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
|
|
|
|
# activate warnings !!!
|
|
SET(g2o_C_FLAGS "${g2o_C_FLAGS} -Wall -W")
|
|
SET(g2o_CXX_FLAGS "${g2o_CXX_FLAGS} -Wall -W")
|
|
|
|
# specifying compiler flags
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${g2o_CXX_FLAGS}")
|
|
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${g2o_C_FLAGS}")
|
|
|
|
# Find Eigen3
|
|
SET(EIGEN3_INCLUDE_DIR ${G2O_EIGEN3_INCLUDE})
|
|
FIND_PACKAGE(Eigen3 3.1.0 REQUIRED)
|
|
IF(EIGEN3_FOUND)
|
|
SET(G2O_EIGEN3_INCLUDE ${EIGEN3_INCLUDE_DIR} CACHE PATH "Directory of Eigen3")
|
|
ELSE(EIGEN3_FOUND)
|
|
SET(G2O_EIGEN3_INCLUDE "" CACHE PATH "Directory of Eigen3")
|
|
ENDIF(EIGEN3_FOUND)
|
|
|
|
# Generate config.h
|
|
SET(G2O_CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER}")
|
|
configure_file(config.h.in ${g2o_SOURCE_DIR}/config.h)
|
|
|
|
# Set up the top-level include directories
|
|
INCLUDE_DIRECTORIES(
|
|
${g2o_SOURCE_DIR}/core
|
|
${g2o_SOURCE_DIR}/types
|
|
${g2o_SOURCE_DIR}/stuff
|
|
${G2O_EIGEN3_INCLUDE})
|
|
|
|
# Include the subdirectories
|
|
ADD_LIBRARY(g2o ${G2O_LIB_TYPE}
|
|
#types
|
|
g2o/types/types_sba.h
|
|
g2o/types/types_six_dof_expmap.h
|
|
g2o/types/types_sba.cpp
|
|
g2o/types/types_six_dof_expmap.cpp
|
|
g2o/types/types_seven_dof_expmap.cpp
|
|
g2o/types/types_seven_dof_expmap.h
|
|
g2o/types/se3quat.h
|
|
g2o/types/se3_ops.h
|
|
g2o/types/se3_ops.hpp
|
|
#core
|
|
g2o/core/base_edge.h
|
|
g2o/core/base_binary_edge.h
|
|
g2o/core/hyper_graph_action.cpp
|
|
g2o/core/base_binary_edge.hpp
|
|
g2o/core/hyper_graph_action.h
|
|
g2o/core/base_multi_edge.h
|
|
g2o/core/hyper_graph.cpp
|
|
g2o/core/base_multi_edge.hpp
|
|
g2o/core/hyper_graph.h
|
|
g2o/core/base_unary_edge.h
|
|
g2o/core/linear_solver.h
|
|
g2o/core/base_unary_edge.hpp
|
|
g2o/core/marginal_covariance_cholesky.cpp
|
|
g2o/core/base_vertex.h
|
|
g2o/core/marginal_covariance_cholesky.h
|
|
g2o/core/base_vertex.hpp
|
|
g2o/core/matrix_structure.cpp
|
|
g2o/core/batch_stats.cpp
|
|
g2o/core/matrix_structure.h
|
|
g2o/core/batch_stats.h
|
|
g2o/core/openmp_mutex.h
|
|
g2o/core/block_solver.h
|
|
g2o/core/block_solver.hpp
|
|
g2o/core/parameter.cpp
|
|
g2o/core/parameter.h
|
|
g2o/core/cache.cpp
|
|
g2o/core/cache.h
|
|
g2o/core/optimizable_graph.cpp
|
|
g2o/core/optimizable_graph.h
|
|
g2o/core/solver.cpp
|
|
g2o/core/solver.h
|
|
g2o/core/creators.h
|
|
g2o/core/optimization_algorithm_factory.cpp
|
|
g2o/core/estimate_propagator.cpp
|
|
g2o/core/optimization_algorithm_factory.h
|
|
g2o/core/estimate_propagator.h
|
|
g2o/core/factory.cpp
|
|
g2o/core/optimization_algorithm_property.h
|
|
g2o/core/factory.h
|
|
g2o/core/sparse_block_matrix.h
|
|
g2o/core/sparse_optimizer.cpp
|
|
g2o/core/sparse_block_matrix.hpp
|
|
g2o/core/sparse_optimizer.h
|
|
g2o/core/hyper_dijkstra.cpp
|
|
g2o/core/hyper_dijkstra.h
|
|
g2o/core/parameter_container.cpp
|
|
g2o/core/parameter_container.h
|
|
g2o/core/optimization_algorithm.cpp
|
|
g2o/core/optimization_algorithm.h
|
|
g2o/core/optimization_algorithm_with_hessian.cpp
|
|
g2o/core/optimization_algorithm_with_hessian.h
|
|
g2o/core/optimization_algorithm_levenberg.cpp
|
|
g2o/core/optimization_algorithm_levenberg.h
|
|
g2o/core/optimization_algorithm_gauss_newton.cpp
|
|
g2o/core/optimization_algorithm_gauss_newton.h
|
|
g2o/core/jacobian_workspace.cpp
|
|
g2o/core/jacobian_workspace.h
|
|
g2o/core/robust_kernel.cpp
|
|
g2o/core/robust_kernel.h
|
|
g2o/core/robust_kernel_factory.cpp
|
|
g2o/core/robust_kernel_factory.h
|
|
g2o/core/robust_kernel_impl.cpp
|
|
g2o/core/robust_kernel_impl.h
|
|
#stuff
|
|
g2o/stuff/string_tools.h
|
|
g2o/stuff/color_macros.h
|
|
g2o/stuff/macros.h
|
|
g2o/stuff/timeutil.cpp
|
|
g2o/stuff/misc.h
|
|
g2o/stuff/timeutil.h
|
|
g2o/stuff/os_specific.c
|
|
g2o/stuff/os_specific.h
|
|
g2o/stuff/string_tools.cpp
|
|
g2o/stuff/property.cpp
|
|
g2o/stuff/property.h
|
|
)
|