-
Notifications
You must be signed in to change notification settings - Fork 75
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CMake refactor, drop catkin and add better organization.
- Loading branch information
Showing
132 changed files
with
193 additions
and
218 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,60 @@ | ||
cmake_minimum_required(VERSION 3.5) | ||
project(iris_lama LANGUAGES CXX C) | ||
|
||
set(IRIS_LAMA_VERSION "1.2.0") | ||
|
||
# http://answers.ros.org/question/230877/optionally-build-a-package-with-catkin/ | ||
if( CATKIN_DEVEL_PREFIX OR catkin_FOUND OR CATKIN_BUILD_BINARY_PACKAGE) | ||
set(COMPILING_WITH_CATKIN 1) | ||
elseif( DEFINED ENV{AMENT_PREFIX_PATH}) | ||
set(COMPILING_WITH_AMENT 1) | ||
endif() | ||
|
||
set(CMAKE_CXX_STANDARD 14) # use c++14 | ||
|
||
option(COMPILE_WITH_SSE "Compile with sse4.1 for faster code" ON) | ||
if (COMPILE_WITH_SSE) | ||
add_compile_options(-msse4.1) | ||
endif() | ||
|
||
|
||
find_package(Eigen 3 QUIET) | ||
if(NOT Eigen_FOUND) | ||
include(${PROJECT_SOURCE_DIR}/cmake/FindEigen3.cmake) | ||
set(Eigen_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}") | ||
endif() | ||
|
||
# Default to release mode. | ||
if (NOT CMAKE_BUILD_TYPE) | ||
set(CMAKE_BUILD_TYPE Release) | ||
endif() | ||
|
||
if(COMPILING_WITH_CATKIN) | ||
message(STATUS "---------------") | ||
message(STATUS "Catkin detected") | ||
message(STATUS "---------------") | ||
|
||
find_package(catkin REQUIRED) | ||
catkin_package( | ||
INCLUDE_DIRS include | ||
LIBRARIES ${PROJECT_NAME} | ||
) | ||
elseif(COMPILING_WITH_AMENT) | ||
message(STATUS "--------------") | ||
message(STATUS "Ament detected") | ||
message(STATUS "--------------") | ||
|
||
find_package(ament_cmake REQUIRED) | ||
ament_export_include_directories(include) | ||
ament_export_libraries(${PROJECT_NAME}) | ||
endif() | ||
|
||
INCLUDE_DIRECTORIES(include ${Eigen_INCLUDE_DIR}) | ||
add_subdirectory(src) | ||
set(IRIS_LAMA_VERSION 1.2.0) | ||
|
||
# provides default CMAKE_INSTALL_<dir> variables | ||
include(GNUInstallDirs) | ||
# helpers to generate <package>Config.cmake | ||
include(CMakePackageConfigHelpers) | ||
|
||
# install location of generated cmake config files | ||
set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME}/cmake) | ||
|
||
if(COMPILING_WITH_AMENT) | ||
ament_package() | ||
# for some reason this variable is set and cmake complains it is not used. | ||
unset( CATKIN_INSTALL_INTO_PREFIX_ROOT ) | ||
endif() | ||
# dependencies | ||
find_package(Eigen3 3.3 REQUIRED NO_MODULE) | ||
|
||
# the code | ||
add_subdirectory(src) | ||
|
||
# libs and binaries, generate export targets | ||
install(TARGETS iris_lama | ||
EXPORT ${CMAKE_PROJECT_NAME}Targets | ||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} | ||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) | ||
|
||
# header files, note the "/" after include | ||
install(DIRECTORY include/ | ||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | ||
|
||
# for build tree / in workspace | ||
export(EXPORT ${CMAKE_PROJECT_NAME}Targets | ||
FILE ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake | ||
NAMESPACE ${CMAKE_PROJECT_NAME}::) | ||
# exported targets | ||
install(EXPORT ${CMAKE_PROJECT_NAME}Targets | ||
FILE ${CMAKE_PROJECT_NAME}Targets.cmake | ||
NAMESPACE ${CMAKE_PROJECT_NAME}:: | ||
DESTINATION ${ConfigPackageLocation}) | ||
|
||
# generate package version file | ||
write_basic_package_version_file( | ||
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake | ||
VERSION ${IRIS_LAMA_VERSION} | ||
COMPATIBILITY SameMajorVersion) | ||
|
||
# generate package configuration file | ||
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) | ||
configure_package_config_file( | ||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/${CMAKE_PROJECT_NAME}Config.cmake.in | ||
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake | ||
INSTALL_DESTINATION ${ConfigPackageLocation} | ||
PATH_VARS INCLUDE_INSTALL_DIR) | ||
|
||
# install the package configuration files | ||
install(FILES | ||
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake | ||
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake | ||
DESTINATION ${ConfigPackageLocation}) | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# required by CMakePackageConfigHelpers | ||
# https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html | ||
@PACKAGE_INIT@ | ||
|
||
# forward the targets | ||
include(${CMAKE_CURRENT_LIST_DIR}/iris_lamaTargets.cmake) | ||
|
||
# define INCLUDE_DIRS and LIBRARIES, required for catkin_package | ||
set_and_check(iris_lama_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@") | ||
set(iris_flama_LIBRARIES iris_lama::iris_lama) | ||
|
||
# forward dependencies AFTER expanding the @PACKAGE_<...>@ macros!!! | ||
# otherwise the expanded paths might point to a found package | ||
include(CMakeFindDependencyMacro) | ||
find_dependency(Eigen3 3.3 REQUIRED NO_MODULE) | ||
|
||
# labels the packages as found or not | ||
check_required_components(iris_lama) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,74 +1,65 @@ | ||
|
||
set(lama_SOURCES) | ||
set(lama_SUBDIRS | ||
# Current diretory | ||
. | ||
set(lama_SOURCES | ||
# Base | ||
buffer_compressor.cpp | ||
graph_slam2d.cpp | ||
image_io.cpp | ||
loc2d.cpp | ||
match_surface_2d.cpp | ||
pf_slam2d.cpp | ||
print.cpp | ||
pose2d.cpp | ||
pose3d.cpp | ||
random.cpp | ||
slam2d.cpp | ||
thread_pool.cpp | ||
|
||
# Non-Linear Least Squares Optimization | ||
nlls | ||
nlls/gauss_newton.cpp | ||
nlls/levenberg_marquardt.cpp | ||
nlls/robust_cost.cpp | ||
nlls/solver.cpp | ||
|
||
# Sparse-Dense Mapping | ||
sdm | ||
# Lossless data compression | ||
extern/lz4 | ||
extern/zstd | ||
# (mini) Smoothing and Mapping | ||
extern/minisam/core | ||
extern/minisam/utils | ||
extern/minisam/linear | ||
extern/minisam/nonlinear | ||
sdm/container.cpp | ||
sdm/dynamic_distance_map.cpp | ||
sdm/export.cpp | ||
sdm/frequency_occupancy_map.cpp | ||
sdm/map.cpp | ||
sdm/marching_cubes.cpp | ||
sdm/probabilistic_occupancy_map.cpp | ||
sdm/simple_occupancy_map.cpp | ||
sdm/truncated_signed_distance_map.cpp | ||
) | ||
|
||
foreach(SUBDIR ${lama_SUBDIRS}) | ||
file(GLOB lama_SRC "${SUBDIR}/*.cpp" "${SUBDIR}/*.c") | ||
list(APPEND lama_SOURCES ${lama_SRC}) | ||
endforeach() | ||
|
||
add_library(${PROJECT_NAME} ${lama_SOURCES}) | ||
target_compile_options(${PROJECT_NAME} PRIVATE -Wall) | ||
target_link_libraries(${PROJECT_NAME} pthread) | ||
|
||
if(COMPILING_WITH_CATKIN) | ||
install(TARGETS ${PROJECT_NAME} | ||
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||
RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION} | ||
) | ||
install(DIRECTORY ../include/lama/ | ||
DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/lama | ||
PATTERN ".svn" EXCLUDE | ||
) | ||
elseif(COMPILING_WITH_AMENT) | ||
install(TARGETS ${PROJECT_NAME} | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
RUNTIME DESTINATION lib | ||
INCLUDES DESTINATION include) | ||
install(DIRECTORY ../include/lama/ | ||
DESTINATION include/lama | ||
PATTERN ".svn" EXCLUDE) | ||
else() | ||
# vendor (or third party) software | ||
add_subdirectory(../vendor/lz4 vendor/lz4) | ||
add_subdirectory(../vendor/minisam vendor/minisam) | ||
add_subdirectory(../vendor/zstd vendor/zstd) | ||
|
||
export(PACKAGE iris_lama) | ||
|
||
install(EXPORT ${PROJECT_NAME}Targets | ||
FILE ${PROJECT_NAME}-config.cmake | ||
DESTINATION lib/cmake/iris_lama) | ||
|
||
install(TARGETS ${PROJECT_NAME} | ||
EXPORT ${PROJECT_NAME}Targets | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
INCLUDES DESTINATION include) | ||
add_library(iris_lama ${lama_SOURCES} | ||
$<TARGET_OBJECTS:lz4> | ||
$<TARGET_OBJECTS:minisam> | ||
$<TARGET_OBJECTS:zstd> | ||
) | ||
|
||
install(DIRECTORY ../include/lama/ | ||
DESTINATION include/lama | ||
PATTERN ".svn" EXCLUDE) | ||
target_include_directories(iris_lama | ||
PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include> | ||
$<INSTALL_INTERFACE:include> | ||
|
||
include(CMakePackageConfigHelpers) | ||
write_basic_package_version_file( | ||
iris_lama-config-version.cmake | ||
VERSION ${IRIS_LAMA_VERSION} | ||
COMPATIBILITY AnyNewerVersion) | ||
PRIVATE | ||
../vendor/lz4 | ||
../vendor/minisam | ||
../vendor/moodycamel | ||
../vendor/nanoflann | ||
../vendor/stb | ||
../vendor/zstd | ||
) | ||
|
||
endif() | ||
target_compile_features(iris_lama PUBLIC cxx_std_14) | ||
target_compile_options(iris_lama PRIVATE -Wall -Wextra) | ||
|
||
target_link_libraries(iris_lama PUBLIC pthread Eigen3::Eigen) | ||
target_include_directories(iris_lama PRIVATE extern/minisam) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.