Build all our source files into a single library. (#164)

master
Damon Kohler 2016-12-20 11:24:08 +01:00 committed by GitHub
parent 71c951b370
commit 4e9c3d69b5
28 changed files with 148 additions and 2396 deletions

View File

@ -12,9 +12,10 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
cmake_minimum_required(VERSION 2.8.12) cmake_minimum_required(VERSION 2.8.12) # Ships with Ubuntu 14.04 (Trusty)
project(cartographer) project(cartographer)
set(CARTOGRAPHER_MAJOR_VERSION 1) set(CARTOGRAPHER_MAJOR_VERSION 1)
set(CARTOGRAPHER_MINOR_VERSION 0) set(CARTOGRAPHER_MINOR_VERSION 0)
set(CARTOGRAPHER_PATCH_VERSION 0) set(CARTOGRAPHER_PATCH_VERSION 0)
@ -25,13 +26,13 @@ include("${CMAKE_SOURCE_DIR}/cmake/functions.cmake")
google_initialize_cartographer_project() google_initialize_cartographer_project()
google_enable_testing() google_enable_testing()
include(FindPkgConfig) find_package(Boost REQUIRED COMPONENTS iostreams)
find_package(Boost REQUIRED COMPONENTS system iostreams)
find_package(Ceres REQUIRED) find_package(Ceres REQUIRED)
find_package(Eigen3 REQUIRED) find_package(Eigen3 REQUIRED)
find_package(LuaGoogle REQUIRED) find_package(LuaGoogle REQUIRED)
find_package(Protobuf REQUIRED) find_package(Protobuf REQUIRED)
include(FindPkgConfig)
PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16) PKG_SEARCH_MODULE(CAIRO REQUIRED cairo>=1.12.16)
# Only build the documentation if we can find Sphinx. # Only build the documentation if we can find Sphinx.
@ -40,8 +41,6 @@ if(SPHINX_FOUND)
add_subdirectory("docs") add_subdirectory("docs")
endif() endif()
SET(ALL_LIBRARIES "" CACHE INTERNAL "ALL_LIBRARIES")
# Install catkin package.xml # Install catkin package.xml
install(FILES package.xml DESTINATION share/cartographer) install(FILES package.xml DESTINATION share/cartographer)
@ -50,8 +49,6 @@ install(DIRECTORY configuration_files DESTINATION share/cartographer/)
install(DIRECTORY cmake DESTINATION share/cartographer/) install(DIRECTORY cmake DESTINATION share/cartographer/)
add_subdirectory("cartographer")
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
# Create a cartographer-config.cmake file for the use from the install tree # Create a cartographer-config.cmake file for the use from the install tree
@ -66,28 +63,136 @@ list(APPEND CARTOGRAPHER_INCLUDE_DIRS "${PROTOBUF_INCLUDE_DIR}")
set(CARTOGRAPHER_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/share/cartographer/cmake") set(CARTOGRAPHER_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/share/cartographer/cmake")
google_combined_library(cartographer file(GLOB_RECURSE ALL_SRCS "*.cc" "*.h")
SRCS "${ALL_LIBRARIES}" file(GLOB_RECURSE ALL_TESTS "*_test.cc")
file(GLOB_RECURSE ALL_EXECUTABLES "*_main.cc")
list(REMOVE_ITEM ALL_SRCS ${ALL_TESTS})
list(REMOVE_ITEM ALL_SRCS ${ALL_EXECUTABLES})
file(GLOB_RECURSE ALL_PROTOS "*.proto")
set(ALL_PROTO_SRCS)
set(ALL_PROTO_HDRS)
foreach(ABS_FIL ${ALL_PROTOS})
file(RELATIVE_PATH REL_FIL ${CMAKE_SOURCE_DIR} ${ABS_FIL})
get_filename_component(DIR ${REL_FIL} DIRECTORY)
get_filename_component(FIL_WE ${REL_FIL} NAME_WE)
list(APPEND ALL_PROTO_SRCS "${CMAKE_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc")
list(APPEND ALL_PROTO_HDRS "${CMAKE_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h")
add_custom_command(
OUTPUT "${CMAKE_BINARY_DIR}/${DIR}/${FIL_WE}.pb.cc"
"${CMAKE_BINARY_DIR}/${DIR}/${FIL_WE}.pb.h"
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
ARGS --cpp_out ${CMAKE_BINARY_DIR} -I
${CMAKE_SOURCE_DIR} ${ABS_FIL}
DEPENDS ${ABS_FIL}
COMMENT "Running C++ protocol buffer compiler on ${ABS_FIL}"
VERBATIM
)
endforeach()
set_source_files_properties(${ALL_PROTO_SRCS} ${ALL_PROTO_HDRS} PROPERTIES GENERATED TRUE)
list(APPEND ALL_SRCS ${ALL_PROTO_SRCS} ${ALL_PROTO_HDRS})
add_library(cartographer ${ALL_SRCS})
add_subdirectory("cartographer")
target_include_directories(cartographer SYSTEM PUBLIC
"${EIGEN3_INCLUDE_DIR}")
target_link_libraries(cartographer PUBLIC ${EIGEN3_LIBRARIES})
target_include_directories(cartographer SYSTEM PUBLIC
"${CERES_INCLUDE_DIRS}")
target_link_libraries(cartographer PUBLIC ${CERES_LIBRARIES})
target_include_directories(cartographer SYSTEM PUBLIC
"${LUA_INCLUDE_DIR}")
target_link_libraries(cartographer PUBLIC ${LUA_LIBRARIES})
target_include_directories(cartographer SYSTEM PUBLIC
"${Boost_INCLUDE_DIRS}")
target_link_libraries(cartographer PUBLIC ${Boost_LIBRARIES})
target_link_libraries(cartographer PUBLIC webp)
target_link_libraries(cartographer PUBLIC glog)
target_link_libraries(cartographer PUBLIC gflags)
target_include_directories(cartographer SYSTEM PUBLIC
"${CAIRO_INCLUDE_DIRS}")
target_link_libraries(cartographer PUBLIC ${CAIRO_LIBRARIES})
target_include_directories(cartographer SYSTEM PUBLIC
${PROTOBUF_INCLUDE_DIR})
# TODO(hrapp): This should not explicitly list pthread and use
# PROTOBUF_LIBRARIES, but that failed on first try.
target_link_libraries(cartographer PUBLIC ${PROTOBUF_LIBRARY} pthread)
# Add the binary directory first, so that port.h is included after it has
# been generated.
target_include_directories(cartographer PUBLIC
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
) )
# TODO(hrapp): Replacing this get_property with a generator expression is not # TODO(damonkohler): Create a testing library.
# very easy: it needs to be expanded into a variable which is then used for target_include_directories(cartographer SYSTEM PRIVATE
# CONFIGURE_PACKAGE_CONFIG_FILE - I did not find an easy way to do it. A "${GMOCK_INCLUDE_DIRS}")
# complicated way is to file(READ the cartographer-config.cmake.in and target_link_libraries(cartographer PUBLIC ${GMOCK_LIBRARIES})
# string(CONFIGURE it, then file(GENERATE the output file. I do not have the
# stomach to attempt this right now. set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}")
get_property(CARTOGRAPHER_LIBRARY_FILE TARGET cartographer PROPERTY LOCATION) set_target_properties(cartographer PROPERTIES
get_filename_component(CARTOGRAPHER_LIBRARY_FILE_BASENAME COMPILE_FLAGS ${TARGET_COMPILE_FLAGS})
${CARTOGRAPHER_LIBRARY_FILE} NAME)
install( install(TARGETS cartographer
FILES ARCHIVE DESTINATION lib
${CARTOGRAPHER_LIBRARY_FILE} LIBRARY DESTINATION lib
DESTINATION RUNTIME DESTINATION bin)
lib
) # Install source headers.
file(GLOB_RECURSE hdrs "*.h")
foreach(HDR ${hdrs})
file(RELATIVE_PATH REL_FIL ${CMAKE_SOURCE_DIR} ${HDR})
get_filename_component(INSTALL_DIR ${REL_FIL} DIRECTORY)
install(
FILES
${HDR}
DESTINATION
include/${INSTALL_DIR}
)
endforeach()
# Install generated headers.
file(GLOB_RECURSE hdrs "*.h.in")
foreach(HDR ${hdrs})
file(RELATIVE_PATH REL_FIL ${CMAKE_SOURCE_DIR} ${HDR})
get_filename_component(DIR ${REL_FIL} DIRECTORY)
get_filename_component(FIL_WE ${REL_FIL} NAME_WE)
install(
FILES
${CMAKE_BINARY_DIR}/${DIR}/${FILE_WE}
DESTINATION
include/${DIR}
)
endforeach()
# Install proto headers.
foreach(HDR ${ALL_PROTO_HDRS})
file(RELATIVE_PATH REL_FIL ${CMAKE_BINARY_DIR} ${HDR})
get_filename_component(DIR ${REL_FIL} DIRECTORY)
install(
FILES
${HDR}
DESTINATION
include/${DIR}
)
endforeach()
set(CARTOGRAPHER_LIBRARIES "") set(CARTOGRAPHER_LIBRARIES "")
list(APPEND CARTOGRAPHER_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/${CARTOGRAPHER_LIBRARY_FILE_BASENAME}") list(APPEND CARTOGRAPHER_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/libcartographer.a")
list(APPEND CARTOGRAPHER_LIBRARIES "${CERES_LIBRARIES}") list(APPEND CARTOGRAPHER_LIBRARIES "${CERES_LIBRARIES}")
list(APPEND CARTOGRAPHER_LIBRARIES "${Boost_LIBRARIES}") list(APPEND CARTOGRAPHER_LIBRARIES "${Boost_LIBRARIES}")
list(APPEND CARTOGRAPHER_LIBRARIES "${LUA_LIBRARIES}") list(APPEND CARTOGRAPHER_LIBRARIES "${LUA_LIBRARIES}")

View File

@ -14,7 +14,6 @@
add_subdirectory("common") add_subdirectory("common")
add_subdirectory("ground_truth") add_subdirectory("ground_truth")
add_subdirectory("io")
add_subdirectory("kalman_filter") add_subdirectory("kalman_filter")
add_subdirectory("mapping") add_subdirectory("mapping")
add_subdirectory("mapping_2d") add_subdirectory("mapping_2d")

View File

@ -12,201 +12,36 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
configure_file ( configure_file (
${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/config.h) ${CMAKE_CURRENT_BINARY_DIR}/config.h)
google_library(common_blocking_queue
USES_GLOG
HDRS
blocking_queue.h
DEPENDS
common_mutex
common_port
common_time
)
google_library(common_ceres_solver_options
USES_CERES
SRCS
ceres_solver_options.cc
HDRS
ceres_solver_options.h
DEPENDS
common_lua_parameter_dictionary
common_proto_ceres_solver_options
)
google_library(common_config
HDRS
config.h
)
google_library(common_configuration_file_resolver
USES_GLOG
SRCS
configuration_file_resolver.cc
HDRS
configuration_file_resolver.h
DEPENDS
common_config
common_lua_parameter_dictionary
common_port
)
google_library(common_fixed_ratio_sampler
SRCS
fixed_ratio_sampler.cc
HDRS
fixed_ratio_sampler.h
DEPENDS
common_port
)
google_library(common_histogram
USES_GLOG
SRCS
histogram.cc
HDRS
histogram.h
DEPENDS
common_port
)
google_library(common_interval
HDRS
interval.h
)
google_library(common_lua
USES_LUA
HDRS
lua.h
)
google_library(common_lua_parameter_dictionary
USES_GLOG
SRCS
lua_parameter_dictionary.cc
HDRS
lua_parameter_dictionary.h
DEPENDS
common_lua
common_port
)
google_library(common_lua_parameter_dictionary_test_helpers
USES_GLOG
HDRS
lua_parameter_dictionary_test_helpers.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
common_port
)
google_library(common_make_unique
HDRS
make_unique.h
)
google_library(common_math
USES_CERES
USES_EIGEN
HDRS
math.h
DEPENDS
common_port
)
google_library(common_mutex
HDRS
mutex.h
DEPENDS
common_time
)
google_library(common_port
USES_BOOST
HDRS
port.h
)
google_library(common_rate_timer
HDRS
rate_timer.h
DEPENDS
common_math
common_port
common_time
)
google_library(common_thread_pool
USES_GLOG
SRCS
thread_pool.cc
HDRS
thread_pool.h
DEPENDS
common_mutex
)
google_library(common_time
SRCS
time.cc
HDRS
time.h
DEPENDS
common_port
)
google_test(common_blocking_queue_test google_test(common_blocking_queue_test
SRCS SRCS
blocking_queue_test.cc blocking_queue_test.cc
DEPENDS
common_blocking_queue
common_make_unique
common_time
) )
google_test(common_configuration_files_test google_test(common_configuration_files_test
SRCS SRCS
configuration_files_test.cc configuration_files_test.cc
DEPENDS
common_config
common_configuration_file_resolver
common_lua_parameter_dictionary
mapping_map_builder
) )
google_test(common_fixed_ratio_sampler_test google_test(common_fixed_ratio_sampler_test
SRCS SRCS
fixed_ratio_sampler_test.cc fixed_ratio_sampler_test.cc
DEPENDS
common_fixed_ratio_sampler
) )
google_test(common_lua_parameter_dictionary_test google_test(common_lua_parameter_dictionary_test
SRCS SRCS
lua_parameter_dictionary_test.cc lua_parameter_dictionary_test.cc
DEPENDS
common_lua_parameter_dictionary
common_lua_parameter_dictionary_test_helpers
common_make_unique
) )
google_test(common_math_test google_test(common_math_test
SRCS SRCS
math_test.cc math_test.cc
DEPENDS
common_math
) )
google_test(common_rate_timer_test google_test(common_rate_timer_test
SRCS SRCS
rate_timer_test.cc rate_timer_test.cc
DEPENDS
common_rate_timer
) )

View File

@ -1,18 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(common_proto_ceres_solver_options
SRCS
ceres_solver_options.proto
)

View File

@ -14,15 +14,6 @@
google_binary(cartographer_compute_relations_metrics google_binary(cartographer_compute_relations_metrics
USES_GFLAGS
USES_GLOG
SRCS SRCS
compute_relations_metrics_main.cc compute_relations_metrics_main.cc
DEPENDS
common_math
common_port
mapping_proto_trajectory
transform_rigid_transform
transform_transform
transform_transform_interpolation_buffer
) )

View File

@ -1,158 +0,0 @@
google_library(io_cairo_types
USES_CAIRO
HDRS
cairo_types.h
)
google_library(io_counting_points_processor
USES_GLOG
SRCS
counting_points_processor.cc
HDRS
counting_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_points_processor
)
google_library(io_fixed_ratio_sampling_points_processor
USES_EIGEN
USES_GLOG
SRCS
fixed_ratio_sampling_points_processor.cc
HDRS
fixed_ratio_sampling_points_processor.h
DEPENDS
common_fixed_ratio_sampler
common_lua_parameter_dictionary
common_make_unique
io_points_processor
)
google_library(io_min_max_range_filtering_points_processor
SRCS
min_max_range_filtering_points_processor.cc
HDRS
min_max_range_filtering_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_points_batch
io_points_processor
)
google_library(io_null_points_processor
HDRS
null_points_processor.h
DEPENDS
io_points_processor
)
google_library(io_outlier_removing_points_processor
USES_GLOG
SRCS
outlier_removing_points_processor.cc
HDRS
outlier_removing_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_points_processor
mapping_3d_hybrid_grid
)
google_library(io_pcd_writing_points_processor
USES_GLOG
SRCS
pcd_writing_points_processor.cc
HDRS
pcd_writing_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_points_batch
io_points_processor
)
google_library(io_ply_writing_points_processor
USES_GLOG
SRCS
ply_writing_points_processor.cc
HDRS
ply_writing_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_points_batch
io_points_processor
)
google_library(io_points_batch
USES_EIGEN
SRCS
points_batch.cc
HDRS
points_batch.h
DEPENDS
common_time
)
google_library(io_points_processor
HDRS
points_processor.h
DEPENDS
io_points_batch
)
google_library(io_points_processor_pipeline_builder
SRCS
points_processor_pipeline_builder.cc
HDRS
points_processor_pipeline_builder.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_counting_points_processor
io_fixed_ratio_sampling_points_processor
io_min_max_range_filtering_points_processor
io_null_points_processor
io_outlier_removing_points_processor
io_pcd_writing_points_processor
io_ply_writing_points_processor
io_points_processor
io_xray_points_processor
io_xyz_writing_points_processor
mapping_proto_trajectory
)
google_library(io_xray_points_processor
USES_CAIRO
USES_EIGEN
SRCS
xray_points_processor.cc
HDRS
xray_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
common_math
io_cairo_types
io_points_processor
mapping_3d_hybrid_grid
mapping_detect_floors
mapping_proto_trajectory
transform_rigid_transform
)
google_library(io_xyz_writing_points_processor
USES_GLOG
SRCS
xyz_writing_points_processor.cc
HDRS
xyz_writing_points_processor.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
io_points_processor
)

View File

@ -12,67 +12,17 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
google_library(kalman_filter_gaussian_distribution
USES_EIGEN
HDRS
gaussian_distribution.h
)
google_library(kalman_filter_pose_tracker
USES_EIGEN
USES_GLOG
SRCS
pose_tracker.cc
HDRS
pose_tracker.h
DEPENDS
common_lua_parameter_dictionary
common_math
common_port
common_time
kalman_filter_gaussian_distribution
kalman_filter_proto_pose_tracker_options
kalman_filter_unscented_kalman_filter
mapping_imu_tracker
mapping_odometry_state_tracker
sensor_proto_sensor
transform_transform
)
google_library(kalman_filter_unscented_kalman_filter
USES_EIGEN
USES_GLOG
HDRS
unscented_kalman_filter.h
DEPENDS
kalman_filter_gaussian_distribution
)
google_test(kalman_filter_gaussian_distribution_test google_test(kalman_filter_gaussian_distribution_test
SRCS SRCS
gaussian_distribution_test.cc gaussian_distribution_test.cc
DEPENDS
kalman_filter_gaussian_distribution
) )
google_test(kalman_filter_pose_tracker_test google_test(kalman_filter_pose_tracker_test
SRCS SRCS
pose_tracker_test.cc pose_tracker_test.cc
DEPENDS
common_lua_parameter_dictionary
common_lua_parameter_dictionary_test_helpers
common_make_unique
kalman_filter_pose_tracker
transform_rigid_transform
transform_rigid_transform_test_helpers
) )
google_test(kalman_filter_unscented_kalman_filter_test google_test(kalman_filter_unscented_kalman_filter_test
SRCS SRCS
unscented_kalman_filter_test.cc unscented_kalman_filter_test.cc
DEPENDS
kalman_filter_gaussian_distribution
kalman_filter_unscented_kalman_filter
) )

View File

@ -1,18 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(kalman_filter_proto_pose_tracker_options
SRCS
pose_tracker_options.proto
)

View File

@ -12,219 +12,22 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
add_subdirectory("sparse_pose_graph")
google_library(mapping_collated_trajectory_builder
USES_GLOG
SRCS
collated_trajectory_builder.cc
HDRS
collated_trajectory_builder.h
DEPENDS
common_port
common_rate_timer
common_time
mapping_global_trajectory_builder_interface
mapping_submaps
mapping_trajectory_builder
sensor_collator
sensor_data
)
google_library(mapping_detect_floors
USES_EIGEN
USES_GLOG
SRCS
detect_floors.cc
HDRS
detect_floors.h
DEPENDS
common_interval
common_time
mapping_proto_trajectory
transform_transform
)
google_library(mapping_global_trajectory_builder_interface
HDRS
global_trajectory_builder_interface.h
DEPENDS
common_time
mapping_submaps
mapping_trajectory_builder
sensor_laser
sensor_point_cloud
)
google_library(mapping_imu_tracker
USES_EIGEN
USES_GLOG
SRCS
imu_tracker.cc
HDRS
imu_tracker.h
DEPENDS
common_math
common_time
transform_transform
)
google_library(mapping_map_builder
USES_EIGEN
USES_GLOG
SRCS
map_builder.cc
HDRS
map_builder.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
common_port
common_thread_pool
mapping_2d_global_trajectory_builder
mapping_2d_sparse_pose_graph
mapping_3d_global_trajectory_builder
mapping_3d_local_trajectory_builder_options
mapping_3d_sparse_pose_graph
mapping_collated_trajectory_builder
mapping_proto_map_builder_options
mapping_proto_submap_visualization
mapping_sparse_pose_graph
mapping_submaps
mapping_trajectory_builder
mapping_trajectory_node
sensor_collator
sensor_laser
sensor_voxel_filter
transform_rigid_transform
transform_transform
)
google_library(mapping_odometry_state_tracker
SRCS
odometry_state_tracker.cc
HDRS
odometry_state_tracker.h
DEPENDS
common_time
transform_rigid_transform
)
google_library(mapping_probability_values
USES_GLOG
SRCS
probability_values.cc
HDRS
probability_values.h
DEPENDS
common_math
common_port
)
google_library(mapping_sparse_pose_graph
USES_GLOG
SRCS
sparse_pose_graph.cc
HDRS
sparse_pose_graph.h
DEPENDS
common_lua_parameter_dictionary
kalman_filter_pose_tracker
mapping_proto_scan_matching_progress
mapping_proto_sparse_pose_graph
mapping_proto_sparse_pose_graph_options
mapping_sparse_pose_graph_constraint_builder
mapping_sparse_pose_graph_optimization_problem_options
mapping_submaps
mapping_trajectory_node
transform_rigid_transform
transform_transform
)
google_library(mapping_submaps
USES_EIGEN
USES_GLOG
SRCS
submaps.cc
HDRS
submaps.h
DEPENDS
common_math
common_port
mapping_2d_probability_grid
mapping_probability_values
mapping_proto_submap_visualization
mapping_trajectory_node
transform_transform
)
google_library(mapping_trajectory_builder
HDRS
trajectory_builder.h
DEPENDS
common_make_unique
common_port
common_time
mapping_submaps
sensor_data
sensor_laser
sensor_point_cloud
)
google_library(mapping_trajectory_connectivity
USES_GLOG
SRCS
trajectory_connectivity.cc
HDRS
trajectory_connectivity.h
DEPENDS
common_mutex
mapping_proto_trajectory_connectivity
mapping_submaps
)
google_library(mapping_trajectory_node
USES_EIGEN
SRCS
trajectory_node.cc
HDRS
trajectory_node.h
DEPENDS
common_time
mapping_proto_trajectory
sensor_laser
transform_rigid_transform
transform_transform
)
google_test(mapping_probability_values_test google_test(mapping_probability_values_test
SRCS SRCS
probability_values_test.cc probability_values_test.cc
DEPENDS
mapping_probability_values
) )
google_test(mapping_sparse_pose_graph_test google_test(mapping_sparse_pose_graph_test
USES_GLOG
SRCS SRCS
sparse_pose_graph_test.cc sparse_pose_graph_test.cc
DEPENDS
mapping_sparse_pose_graph
) )
google_test(mapping_submaps_test google_test(mapping_submaps_test
SRCS SRCS
submaps_test.cc submaps_test.cc
DEPENDS
mapping_submaps
) )
google_test(mapping_trajectory_connectivity_test google_test(mapping_trajectory_connectivity_test
SRCS SRCS
trajectory_connectivity_test.cc trajectory_connectivity_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_2d_submaps
mapping_trajectory_connectivity
) )

View File

@ -1,62 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(mapping_proto_map_builder_options
SRCS
map_builder_options.proto
DEPENDS
mapping_2d_proto_local_trajectory_builder_options
mapping_3d_proto_local_trajectory_builder_options
mapping_proto_sparse_pose_graph_options
)
google_proto_library(mapping_proto_scan_matching_progress
SRCS
scan_matching_progress.proto
)
google_proto_library(mapping_proto_sparse_pose_graph
SRCS
sparse_pose_graph.proto
DEPENDS
mapping_proto_trajectory
transform_proto_transform
)
google_proto_library(mapping_proto_sparse_pose_graph_options
SRCS
sparse_pose_graph_options.proto
DEPENDS
mapping_sparse_pose_graph_proto_constraint_builder_options
mapping_sparse_pose_graph_proto_optimization_problem_options
)
google_proto_library(mapping_proto_submap_visualization
SRCS
submap_visualization.proto
DEPENDS
transform_proto_transform
)
google_proto_library(mapping_proto_trajectory
SRCS
trajectory.proto
DEPENDS
transform_proto_transform
)
google_proto_library(mapping_proto_trajectory_connectivity
SRCS
trajectory_connectivity.proto
)

View File

@ -1,41 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
add_subdirectory("proto")
google_library(mapping_sparse_pose_graph_constraint_builder
SRCS
constraint_builder.cc
HDRS
constraint_builder.h
DEPENDS
common_lua_parameter_dictionary
mapping_2d_scan_matching_ceres_scan_matcher
mapping_2d_scan_matching_fast_correlative_scan_matcher
mapping_3d_scan_matching_ceres_scan_matcher
mapping_3d_scan_matching_fast_correlative_scan_matcher
mapping_sparse_pose_graph_proto_constraint_builder_options
sensor_voxel_filter
)
google_library(mapping_sparse_pose_graph_optimization_problem_options
SRCS
optimization_problem_options.cc
HDRS
optimization_problem_options.h
DEPENDS
common_ceres_solver_options
common_lua_parameter_dictionary
mapping_sparse_pose_graph_proto_optimization_problem_options
)

View File

@ -1,31 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(mapping_sparse_pose_graph_proto_constraint_builder_options
SRCS
constraint_builder_options.proto
DEPENDS
mapping_2d_scan_matching_proto_ceres_scan_matcher_options
mapping_2d_scan_matching_proto_fast_correlative_scan_matcher_options
mapping_3d_scan_matching_proto_ceres_scan_matcher_options
mapping_3d_scan_matching_proto_fast_correlative_scan_matcher_options
sensor_proto_adaptive_voxel_filter_options
)
google_proto_library(mapping_sparse_pose_graph_proto_optimization_problem_options
SRCS
optimization_problem_options.proto
DEPENDS
common_proto_ceres_solver_options
)

View File

@ -12,219 +12,34 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
add_subdirectory("scan_matching") add_subdirectory("scan_matching")
add_subdirectory("sparse_pose_graph")
google_library(mapping_2d_global_trajectory_builder
SRCS
global_trajectory_builder.cc
HDRS
global_trajectory_builder.h
DEPENDS
mapping_2d_local_trajectory_builder
mapping_2d_sparse_pose_graph
mapping_global_trajectory_builder_interface
)
google_library(mapping_2d_laser_fan_inserter
USES_EIGEN
USES_GLOG
SRCS
laser_fan_inserter.cc
HDRS
laser_fan_inserter.h
DEPENDS
common_lua_parameter_dictionary
common_port
mapping_2d_probability_grid
mapping_2d_proto_laser_fan_inserter_options
mapping_2d_ray_casting
mapping_2d_xy_index
sensor_laser
sensor_point_cloud
)
google_library(mapping_2d_local_trajectory_builder
SRCS
local_trajectory_builder.cc
HDRS
local_trajectory_builder.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
common_time
mapping_2d_proto_local_trajectory_builder_options
mapping_2d_scan_matching_ceres_scan_matcher
mapping_2d_scan_matching_real_time_correlative_scan_matcher
mapping_2d_submaps
mapping_3d_motion_filter
mapping_global_trajectory_builder_interface
mapping_imu_tracker
mapping_odometry_state_tracker
sensor_configuration
sensor_laser
sensor_voxel_filter
transform_rigid_transform
)
google_library(mapping_2d_map_limits
USES_EIGEN
USES_GLOG
HDRS
map_limits.h
DEPENDS
common_math
mapping_2d_xy_index
mapping_trajectory_node
sensor_laser
sensor_point_cloud
transform_rigid_transform
transform_transform
)
google_library(mapping_2d_probability_grid
USES_GLOG
HDRS
probability_grid.h
DEPENDS
common_math
common_port
mapping_2d_map_limits
mapping_2d_xy_index
mapping_probability_values
)
google_library(mapping_2d_ray_casting
SRCS
ray_casting.cc
HDRS
ray_casting.h
DEPENDS
mapping_2d_map_limits
mapping_2d_xy_index
sensor_laser
sensor_point_cloud
transform_transform
)
google_library(mapping_2d_sparse_pose_graph
USES_EIGEN
USES_GLOG
SRCS
sparse_pose_graph.cc
HDRS
sparse_pose_graph.h
DEPENDS
common_fixed_ratio_sampler
common_make_unique
common_math
common_mutex
common_thread_pool
common_time
kalman_filter_pose_tracker
mapping_2d_sparse_pose_graph_constraint_builder
mapping_2d_sparse_pose_graph_optimization_problem
mapping_2d_submaps
mapping_proto_scan_matching_progress
mapping_sparse_pose_graph
mapping_sparse_pose_graph_proto_constraint_builder_options
mapping_trajectory_connectivity
sensor_compressed_point_cloud
sensor_point_cloud
sensor_voxel_filter
transform_rigid_transform
transform_transform
)
google_library(mapping_2d_submaps
USES_EIGEN
USES_GLOG
USES_WEBP
SRCS
submaps.cc
HDRS
submaps.h
DEPENDS
common_lua_parameter_dictionary
common_make_unique
common_port
mapping_2d_laser_fan_inserter
mapping_2d_map_limits
mapping_2d_probability_grid
mapping_2d_proto_submaps_options
mapping_proto_submap_visualization
mapping_submaps
mapping_trajectory_node
sensor_laser
transform_rigid_transform
)
google_library(mapping_2d_xy_index
USES_EIGEN
USES_GLOG
HDRS
xy_index.h
DEPENDS
common_math
common_port
)
google_test(mapping_2d_laser_fan_inserter_test google_test(mapping_2d_laser_fan_inserter_test
SRCS SRCS
laser_fan_inserter_test.cc laser_fan_inserter_test.cc
DEPENDS
common_lua_parameter_dictionary
common_lua_parameter_dictionary_test_helpers
common_make_unique
mapping_2d_laser_fan_inserter
mapping_2d_probability_grid
) )
google_test(mapping_2d_map_limits_test google_test(mapping_2d_map_limits_test
SRCS SRCS
map_limits_test.cc map_limits_test.cc
DEPENDS
mapping_2d_map_limits
) )
google_test(mapping_2d_probability_grid_test google_test(mapping_2d_probability_grid_test
SRCS SRCS
probability_grid_test.cc probability_grid_test.cc
DEPENDS
mapping_2d_probability_grid
) )
google_test(mapping_2d_sparse_pose_graph_test google_test(mapping_2d_sparse_pose_graph_test
SRCS SRCS
sparse_pose_graph_test.cc sparse_pose_graph_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
common_make_unique
common_thread_pool
common_time
mapping_2d_laser_fan_inserter
mapping_2d_sparse_pose_graph
mapping_2d_submaps
transform_rigid_transform
transform_rigid_transform_test_helpers
transform_transform
) )
google_test(mapping_2d_submaps_test google_test(mapping_2d_submaps_test
SRCS SRCS
submaps_test.cc submaps_test.cc
DEPENDS
common_lua_parameter_dictionary
common_lua_parameter_dictionary_test_helpers
common_port
mapping_2d_submaps
transform_transform
) )
google_test(mapping_2d_xy_index_test google_test(mapping_2d_xy_index_test
SRCS SRCS
xy_index_test.cc xy_index_test.cc
DEPENDS
mapping_2d_xy_index
) )

View File

@ -1,36 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(mapping_2d_proto_laser_fan_inserter_options
SRCS
laser_fan_inserter_options.proto
)
google_proto_library(mapping_2d_proto_local_trajectory_builder_options
SRCS
local_trajectory_builder_options.proto
DEPENDS
mapping_2d_proto_submaps_options
mapping_2d_scan_matching_proto_ceres_scan_matcher_options
mapping_2d_scan_matching_proto_real_time_correlative_scan_matcher_options
mapping_3d_proto_motion_filter_options
sensor_proto_adaptive_voxel_filter_options
)
google_proto_library(mapping_2d_proto_submaps_options
SRCS
submaps_options.proto
DEPENDS
mapping_2d_proto_laser_fan_inserter_options
)

View File

@ -12,159 +12,22 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
google_library(mapping_2d_scan_matching_ceres_scan_matcher
USES_CERES
USES_EIGEN
USES_GLOG
SRCS
ceres_scan_matcher.cc
HDRS
ceres_scan_matcher.h
DEPENDS
common_ceres_solver_options
common_lua_parameter_dictionary
kalman_filter_pose_tracker
mapping_2d_probability_grid
mapping_2d_scan_matching_occupied_space_cost_functor
mapping_2d_scan_matching_proto_ceres_scan_matcher_options
mapping_2d_scan_matching_rotation_delta_cost_functor
mapping_2d_scan_matching_translation_delta_cost_functor
sensor_point_cloud
transform_transform
)
google_library(mapping_2d_scan_matching_correlative_scan_matcher
USES_EIGEN
SRCS
correlative_scan_matcher.cc
HDRS
correlative_scan_matcher.h
DEPENDS
common_lua_parameter_dictionary
common_math
mapping_2d_map_limits
mapping_2d_xy_index
sensor_point_cloud
)
google_library(mapping_2d_scan_matching_fast_correlative_scan_matcher
USES_EIGEN
USES_GLOG
SRCS
fast_correlative_scan_matcher.cc
HDRS
fast_correlative_scan_matcher.h
DEPENDS
common_math
common_port
mapping_2d_probability_grid
mapping_2d_scan_matching_correlative_scan_matcher
mapping_2d_scan_matching_proto_fast_correlative_scan_matcher_options
sensor_point_cloud
transform_transform
)
google_library(mapping_2d_scan_matching_fast_global_localizer
USES_EIGEN
USES_GLOG
SRCS
fast_global_localizer.cc
HDRS
fast_global_localizer.h
DEPENDS
mapping_2d_scan_matching_fast_correlative_scan_matcher
sensor_voxel_filter
)
google_library(mapping_2d_scan_matching_occupied_space_cost_functor
USES_CERES
USES_EIGEN
HDRS
occupied_space_cost_functor.h
DEPENDS
mapping_2d_probability_grid
sensor_point_cloud
)
google_library(mapping_2d_scan_matching_real_time_correlative_scan_matcher
USES_EIGEN
USES_GLOG
SRCS
real_time_correlative_scan_matcher.cc
HDRS
real_time_correlative_scan_matcher.h
DEPENDS
common_lua_parameter_dictionary
common_math
mapping_2d_probability_grid
mapping_2d_scan_matching_correlative_scan_matcher
mapping_2d_scan_matching_proto_real_time_correlative_scan_matcher_options
sensor_point_cloud
transform_transform
)
google_library(mapping_2d_scan_matching_rotation_delta_cost_functor
USES_EIGEN
HDRS
rotation_delta_cost_functor.h
DEPENDS
transform_transform
)
google_library(mapping_2d_scan_matching_translation_delta_cost_functor
USES_EIGEN
HDRS
translation_delta_cost_functor.h
DEPENDS
transform_rigid_transform
)
google_test(mapping_2d_scan_matching_ceres_scan_matcher_test google_test(mapping_2d_scan_matching_ceres_scan_matcher_test
SRCS SRCS
ceres_scan_matcher_test.cc ceres_scan_matcher_test.cc
DEPENDS
common_lua_parameter_dictionary
common_lua_parameter_dictionary_test_helpers
common_make_unique
mapping_2d_probability_grid
mapping_2d_scan_matching_ceres_scan_matcher
sensor_point_cloud
transform_rigid_transform_test_helpers
) )
google_test(mapping_2d_scan_matching_correlative_scan_matcher_test google_test(mapping_2d_scan_matching_correlative_scan_matcher_test
SRCS SRCS
correlative_scan_matcher_test.cc correlative_scan_matcher_test.cc
DEPENDS
mapping_2d_scan_matching_correlative_scan_matcher
sensor_point_cloud
) )
google_test(mapping_2d_scan_matching_fast_correlative_scan_matcher_test google_test(mapping_2d_scan_matching_fast_correlative_scan_matcher_test
SRCS SRCS
fast_correlative_scan_matcher_test.cc fast_correlative_scan_matcher_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_2d_laser_fan_inserter
mapping_2d_probability_grid
mapping_2d_scan_matching_fast_correlative_scan_matcher
transform_rigid_transform_test_helpers
transform_transform
) )
google_test(mapping_2d_scan_matching_real_time_correlative_scan_matcher_test google_test(mapping_2d_scan_matching_real_time_correlative_scan_matcher_test
USES_EIGEN
SRCS SRCS
real_time_correlative_scan_matcher_test.cc real_time_correlative_scan_matcher_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
common_make_unique
kalman_filter_pose_tracker
mapping_2d_laser_fan_inserter
mapping_2d_probability_grid
mapping_2d_scan_matching_real_time_correlative_scan_matcher
sensor_point_cloud
transform_transform
) )

View File

@ -1,30 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(mapping_2d_scan_matching_proto_ceres_scan_matcher_options
SRCS
ceres_scan_matcher_options.proto
DEPENDS
common_proto_ceres_solver_options
)
google_proto_library(mapping_2d_scan_matching_proto_fast_correlative_scan_matcher_options
SRCS
fast_correlative_scan_matcher_options.proto
)
google_proto_library(mapping_2d_scan_matching_proto_real_time_correlative_scan_matcher_options
SRCS
real_time_correlative_scan_matcher_options.proto
)

View File

@ -1,78 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_library(mapping_2d_sparse_pose_graph_constraint_builder
USES_EIGEN
USES_GLOG
SRCS
constraint_builder.cc
HDRS
constraint_builder.h
DEPENDS
common_fixed_ratio_sampler
common_histogram
common_make_unique
common_math
common_mutex
common_thread_pool
kalman_filter_pose_tracker
mapping_2d_scan_matching_ceres_scan_matcher
mapping_2d_scan_matching_fast_correlative_scan_matcher
mapping_2d_scan_matching_proto_ceres_scan_matcher_options
mapping_2d_scan_matching_proto_fast_correlative_scan_matcher_options
mapping_2d_submaps
mapping_3d_scan_matching_ceres_scan_matcher
mapping_3d_scan_matching_fast_correlative_scan_matcher
mapping_sparse_pose_graph
mapping_sparse_pose_graph_proto_constraint_builder_options
mapping_trajectory_connectivity
sensor_point_cloud
sensor_voxel_filter
transform_transform
)
google_library(mapping_2d_sparse_pose_graph_optimization_problem
USES_CERES
USES_EIGEN
USES_GLOG
SRCS
optimization_problem.cc
HDRS
optimization_problem.h
DEPENDS
common_ceres_solver_options
common_histogram
common_math
common_port
common_time
mapping_2d_sparse_pose_graph_spa_cost_function
mapping_2d_submaps
mapping_3d_imu_integration
mapping_sparse_pose_graph
mapping_sparse_pose_graph_proto_optimization_problem_options
transform_transform
)
google_library(mapping_2d_sparse_pose_graph_spa_cost_function
USES_CERES
USES_EIGEN
HDRS
spa_cost_function.h
DEPENDS
common_math
kalman_filter_pose_tracker
mapping_sparse_pose_graph
transform_rigid_transform
transform_transform
)

View File

@ -12,308 +12,25 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
add_subdirectory("scan_matching") add_subdirectory("scan_matching")
add_subdirectory("sparse_pose_graph") add_subdirectory("sparse_pose_graph")
google_library(mapping_3d_acceleration_cost_function
USES_EIGEN
HDRS
acceleration_cost_function.h
)
google_library(mapping_3d_ceres_pose
USES_CERES
USES_EIGEN
SRCS
ceres_pose.cc
HDRS
ceres_pose.h
DEPENDS
transform_rigid_transform
)
google_library(mapping_3d_global_trajectory_builder
SRCS
global_trajectory_builder.cc
HDRS
global_trajectory_builder.h
DEPENDS
mapping_3d_local_trajectory_builder
mapping_3d_proto_local_trajectory_builder_options
mapping_3d_sparse_pose_graph
mapping_global_trajectory_builder_interface
)
google_library(mapping_3d_hybrid_grid
USES_EIGEN
USES_GLOG
HDRS
hybrid_grid.h
DEPENDS
common_make_unique
common_math
common_port
mapping_probability_values
)
google_library(mapping_3d_imu_integration
USES_EIGEN
USES_GLOG
SRCS
imu_integration.cc
HDRS
imu_integration.h
DEPENDS
common_time
transform_transform
)
google_library(mapping_3d_kalman_local_trajectory_builder
USES_GLOG
SRCS
kalman_local_trajectory_builder.cc
HDRS
kalman_local_trajectory_builder.h
DEPENDS
common_make_unique
common_time
kalman_filter_pose_tracker
kalman_filter_proto_pose_tracker_options
mapping_2d_scan_matching_proto_real_time_correlative_scan_matcher_options
mapping_3d_local_trajectory_builder_interface
mapping_3d_motion_filter
mapping_3d_proto_local_trajectory_builder_options
mapping_3d_proto_submaps_options
mapping_3d_scan_matching_ceres_scan_matcher
mapping_3d_scan_matching_proto_ceres_scan_matcher_options
mapping_3d_scan_matching_real_time_correlative_scan_matcher
mapping_3d_submaps
mapping_global_trajectory_builder_interface
sensor_laser
sensor_voxel_filter
)
google_library(mapping_3d_kalman_local_trajectory_builder_options
SRCS
kalman_local_trajectory_builder_options.cc
HDRS
kalman_local_trajectory_builder_options.h
DEPENDS
common_lua_parameter_dictionary
kalman_filter_pose_tracker
mapping_2d_scan_matching_real_time_correlative_scan_matcher
mapping_3d_proto_kalman_local_trajectory_builder_options
)
google_library(mapping_3d_laser_fan_inserter
USES_EIGEN
USES_GLOG
SRCS
laser_fan_inserter.cc
HDRS
laser_fan_inserter.h
DEPENDS
mapping_3d_hybrid_grid
mapping_3d_proto_laser_fan_inserter_options
mapping_probability_values
sensor_laser
sensor_point_cloud
)
google_library(mapping_3d_local_trajectory_builder
SRCS
local_trajectory_builder.cc
HDRS
local_trajectory_builder.h
DEPENDS
common_make_unique
mapping_3d_kalman_local_trajectory_builder
mapping_3d_local_trajectory_builder_interface
mapping_3d_optimizing_local_trajectory_builder
mapping_3d_proto_local_trajectory_builder_options
)
google_library(mapping_3d_local_trajectory_builder_interface
HDRS
local_trajectory_builder_interface.h
DEPENDS
common_time
mapping_3d_submaps
mapping_global_trajectory_builder_interface
sensor_laser
transform_rigid_transform
)
google_library(mapping_3d_local_trajectory_builder_options
USES_GLOG
SRCS
local_trajectory_builder_options.cc
HDRS
local_trajectory_builder_options.h
DEPENDS
common_lua_parameter_dictionary
mapping_3d_kalman_local_trajectory_builder_options
mapping_3d_motion_filter
mapping_3d_optimizing_local_trajectory_builder_options
mapping_3d_proto_local_trajectory_builder_options
mapping_3d_scan_matching_ceres_scan_matcher
mapping_3d_submaps
sensor_voxel_filter
)
google_library(mapping_3d_motion_filter
USES_GLOG
SRCS
motion_filter.cc
HDRS
motion_filter.h
DEPENDS
common_lua_parameter_dictionary
common_time
mapping_3d_proto_motion_filter_options
transform_rigid_transform
transform_transform
)
google_library(mapping_3d_optimizing_local_trajectory_builder
USES_GLOG
SRCS
optimizing_local_trajectory_builder.cc
HDRS
optimizing_local_trajectory_builder.h
DEPENDS
common_ceres_solver_options
common_make_unique
common_time
kalman_filter_pose_tracker
mapping_3d_imu_integration
mapping_3d_local_trajectory_builder_interface
mapping_3d_motion_filter
mapping_3d_proto_local_trajectory_builder_options
mapping_3d_proto_optimizing_local_trajectory_builder_options
mapping_3d_rotation_cost_function
mapping_3d_scan_matching_occupied_space_cost_functor
mapping_3d_scan_matching_proto_ceres_scan_matcher_options
mapping_3d_scan_matching_translation_delta_cost_functor
mapping_3d_submaps
mapping_3d_translation_cost_function
mapping_global_trajectory_builder_interface
sensor_laser
sensor_voxel_filter
transform_rigid_transform
transform_transform
transform_transform_interpolation_buffer
)
google_library(mapping_3d_optimizing_local_trajectory_builder_options
SRCS
optimizing_local_trajectory_builder_options.cc
HDRS
optimizing_local_trajectory_builder_options.h
DEPENDS
common_lua_parameter_dictionary
mapping_3d_proto_optimizing_local_trajectory_builder_options
)
google_library(mapping_3d_rotation_cost_function
USES_EIGEN
HDRS
rotation_cost_function.h
)
google_library(mapping_3d_sparse_pose_graph
USES_EIGEN
USES_GLOG
SRCS
sparse_pose_graph.cc
HDRS
sparse_pose_graph.h
DEPENDS
common_fixed_ratio_sampler
common_make_unique
common_math
common_mutex
common_thread_pool
common_time
kalman_filter_pose_tracker
mapping_3d_sparse_pose_graph_constraint_builder
mapping_3d_sparse_pose_graph_optimization_problem
mapping_3d_submaps
mapping_proto_scan_matching_progress
mapping_sparse_pose_graph
mapping_sparse_pose_graph_proto_constraint_builder_options
mapping_trajectory_connectivity
sensor_compressed_point_cloud
sensor_point_cloud
sensor_voxel_filter
transform_rigid_transform
transform_transform
)
google_library(mapping_3d_submaps
USES_EIGEN
USES_GLOG
SRCS
submaps.cc
HDRS
submaps.h
DEPENDS
common_math
common_port
mapping_2d_laser_fan_inserter
mapping_2d_probability_grid
mapping_3d_hybrid_grid
mapping_3d_laser_fan_inserter
mapping_3d_proto_submaps_options
mapping_proto_submap_visualization
mapping_submaps
sensor_laser
transform_transform
)
google_library(mapping_3d_translation_cost_function
USES_EIGEN
HDRS
translation_cost_function.h
)
google_test(mapping_3d_hybrid_grid_test google_test(mapping_3d_hybrid_grid_test
SRCS SRCS
hybrid_grid_test.cc hybrid_grid_test.cc
DEPENDS
mapping_3d_hybrid_grid
) )
google_test(mapping_3d_kalman_local_trajectory_builder_test google_test(mapping_3d_kalman_local_trajectory_builder_test
USES_EIGEN
USES_GLOG
SRCS SRCS
kalman_local_trajectory_builder_test.cc kalman_local_trajectory_builder_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
common_time
mapping_3d_hybrid_grid
mapping_3d_kalman_local_trajectory_builder
mapping_3d_local_trajectory_builder_options
sensor_laser
transform_rigid_transform
transform_rigid_transform_test_helpers
transform_transform
) )
google_test(mapping_3d_laser_fan_inserter_test google_test(mapping_3d_laser_fan_inserter_test
SRCS SRCS
laser_fan_inserter_test.cc laser_fan_inserter_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_3d_laser_fan_inserter
) )
google_test(mapping_3d_motion_filter_test google_test(mapping_3d_motion_filter_test
SRCS SRCS
motion_filter_test.cc motion_filter_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_3d_motion_filter
) )

View File

@ -1,55 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(mapping_3d_proto_kalman_local_trajectory_builder_options
SRCS
kalman_local_trajectory_builder_options.proto
DEPENDS
kalman_filter_proto_pose_tracker_options
mapping_2d_scan_matching_proto_real_time_correlative_scan_matcher_options
)
google_proto_library(mapping_3d_proto_laser_fan_inserter_options
SRCS
laser_fan_inserter_options.proto
)
google_proto_library(mapping_3d_proto_local_trajectory_builder_options
SRCS
local_trajectory_builder_options.proto
DEPENDS
mapping_3d_proto_kalman_local_trajectory_builder_options
mapping_3d_proto_motion_filter_options
mapping_3d_proto_optimizing_local_trajectory_builder_options
mapping_3d_proto_submaps_options
mapping_3d_scan_matching_proto_ceres_scan_matcher_options
sensor_proto_adaptive_voxel_filter_options
)
google_proto_library(mapping_3d_proto_motion_filter_options
SRCS
motion_filter_options.proto
)
google_proto_library(mapping_3d_proto_optimizing_local_trajectory_builder_options
SRCS
optimizing_local_trajectory_builder_options.proto
)
google_proto_library(mapping_3d_proto_submaps_options
SRCS
submaps_options.proto
DEPENDS
mapping_3d_proto_laser_fan_inserter_options
)

View File

@ -12,182 +12,27 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
google_library(mapping_3d_scan_matching_ceres_scan_matcher
USES_CERES
USES_EIGEN
USES_GLOG
SRCS
ceres_scan_matcher.cc
HDRS
ceres_scan_matcher.h
DEPENDS
common_ceres_solver_options
common_lua_parameter_dictionary
common_make_unique
kalman_filter_pose_tracker
mapping_3d_ceres_pose
mapping_3d_hybrid_grid
mapping_3d_scan_matching_occupied_space_cost_functor
mapping_3d_scan_matching_proto_ceres_scan_matcher_options
mapping_3d_scan_matching_rotation_delta_cost_functor
mapping_3d_scan_matching_translation_delta_cost_functor
sensor_point_cloud
transform_rigid_transform
transform_transform
)
google_library(mapping_3d_scan_matching_fast_correlative_scan_matcher
USES_EIGEN
USES_GLOG
SRCS
fast_correlative_scan_matcher.cc
HDRS
fast_correlative_scan_matcher.h
DEPENDS
common_make_unique
common_math
common_port
mapping_2d_scan_matching_fast_correlative_scan_matcher
mapping_3d_hybrid_grid
mapping_3d_scan_matching_precomputation_grid
mapping_3d_scan_matching_proto_fast_correlative_scan_matcher_options
mapping_3d_scan_matching_rotational_scan_matcher
mapping_trajectory_node
sensor_point_cloud
transform_transform
)
google_library(mapping_3d_scan_matching_interpolated_grid
HDRS
interpolated_grid.h
DEPENDS
mapping_3d_hybrid_grid
)
google_library(mapping_3d_scan_matching_occupied_space_cost_functor
USES_EIGEN
HDRS
occupied_space_cost_functor.h
DEPENDS
mapping_3d_hybrid_grid
mapping_3d_scan_matching_interpolated_grid
sensor_point_cloud
transform_rigid_transform
transform_transform
)
google_library(mapping_3d_scan_matching_precomputation_grid
USES_EIGEN
USES_GLOG
SRCS
precomputation_grid.cc
HDRS
precomputation_grid.h
DEPENDS
common_math
mapping_3d_hybrid_grid
mapping_probability_values
)
google_library(mapping_3d_scan_matching_real_time_correlative_scan_matcher
USES_EIGEN
USES_GLOG
SRCS
real_time_correlative_scan_matcher.cc
HDRS
real_time_correlative_scan_matcher.h
DEPENDS
common_math
mapping_2d_scan_matching_proto_real_time_correlative_scan_matcher_options
mapping_3d_hybrid_grid
sensor_point_cloud
transform_transform
)
google_library(mapping_3d_scan_matching_rotation_delta_cost_functor
USES_CERES
USES_EIGEN
HDRS
rotation_delta_cost_functor.h
DEPENDS
transform_rigid_transform
transform_transform
)
google_library(mapping_3d_scan_matching_rotational_scan_matcher
USES_EIGEN
SRCS
rotational_scan_matcher.cc
HDRS
rotational_scan_matcher.h
DEPENDS
common_math
mapping_trajectory_node
sensor_point_cloud
)
google_library(mapping_3d_scan_matching_translation_delta_cost_functor
USES_EIGEN
HDRS
translation_delta_cost_functor.h
DEPENDS
transform_rigid_transform
)
google_test(mapping_3d_scan_matching_ceres_scan_matcher_test google_test(mapping_3d_scan_matching_ceres_scan_matcher_test
USES_EIGEN
SRCS SRCS
ceres_scan_matcher_test.cc ceres_scan_matcher_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_3d_hybrid_grid
mapping_3d_scan_matching_ceres_scan_matcher
sensor_point_cloud
transform_rigid_transform
transform_rigid_transform_test_helpers
) )
google_test(mapping_3d_scan_matching_fast_correlative_scan_matcher_test google_test(mapping_3d_scan_matching_fast_correlative_scan_matcher_test
SRCS SRCS
fast_correlative_scan_matcher_test.cc fast_correlative_scan_matcher_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_3d_laser_fan_inserter
mapping_3d_scan_matching_fast_correlative_scan_matcher
transform_rigid_transform_test_helpers
transform_transform
) )
google_test(mapping_3d_scan_matching_interpolated_grid_test google_test(mapping_3d_scan_matching_interpolated_grid_test
USES_EIGEN
SRCS SRCS
interpolated_grid_test.cc interpolated_grid_test.cc
DEPENDS
mapping_3d_hybrid_grid
mapping_3d_scan_matching_interpolated_grid
) )
google_test(mapping_3d_scan_matching_precomputation_grid_test google_test(mapping_3d_scan_matching_precomputation_grid_test
SRCS SRCS
precomputation_grid_test.cc precomputation_grid_test.cc
DEPENDS
mapping_3d_hybrid_grid
mapping_3d_scan_matching_precomputation_grid
) )
google_test(mapping_3d_scan_matching_real_time_correlative_scan_matcher_test google_test(mapping_3d_scan_matching_real_time_correlative_scan_matcher_test
USES_EIGEN
SRCS SRCS
real_time_correlative_scan_matcher_test.cc real_time_correlative_scan_matcher_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
mapping_2d_scan_matching_real_time_correlative_scan_matcher
mapping_3d_hybrid_grid
mapping_3d_scan_matching_real_time_correlative_scan_matcher
sensor_point_cloud
transform_rigid_transform
transform_rigid_transform_test_helpers
transform_transform
) )

View File

@ -1,25 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(mapping_3d_scan_matching_proto_ceres_scan_matcher_options
SRCS
ceres_scan_matcher_options.proto
DEPENDS
common_proto_ceres_solver_options
)
google_proto_library(mapping_3d_scan_matching_proto_fast_correlative_scan_matcher_options
SRCS
fast_correlative_scan_matcher_options.proto
)

View File

@ -12,82 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
google_library(mapping_3d_sparse_pose_graph_constraint_builder
USES_EIGEN
USES_GLOG
SRCS
constraint_builder.cc
HDRS
constraint_builder.h
DEPENDS
common_fixed_ratio_sampler
common_histogram
common_lua_parameter_dictionary
common_make_unique
common_math
common_mutex
common_thread_pool
kalman_filter_pose_tracker
mapping_3d_scan_matching_ceres_scan_matcher
mapping_3d_scan_matching_fast_correlative_scan_matcher
mapping_3d_scan_matching_proto_ceres_scan_matcher_options
mapping_3d_scan_matching_proto_fast_correlative_scan_matcher_options
mapping_3d_sparse_pose_graph_optimization_problem
mapping_3d_submaps
mapping_submaps
mapping_trajectory_connectivity
mapping_trajectory_node
sensor_compressed_point_cloud
sensor_point_cloud
sensor_voxel_filter
transform_transform
)
google_library(mapping_3d_sparse_pose_graph_optimization_problem
USES_CERES
USES_EIGEN
USES_GLOG
SRCS
optimization_problem.cc
HDRS
optimization_problem.h
DEPENDS
common_ceres_solver_options
common_make_unique
common_math
common_port
common_time
mapping_3d_acceleration_cost_function
mapping_3d_ceres_pose
mapping_3d_imu_integration
mapping_3d_rotation_cost_function
mapping_3d_sparse_pose_graph_spa_cost_function
mapping_3d_submaps
mapping_sparse_pose_graph
mapping_sparse_pose_graph_proto_optimization_problem_options
transform_transform
)
google_library(mapping_3d_sparse_pose_graph_spa_cost_function
USES_CERES
USES_EIGEN
HDRS
spa_cost_function.h
DEPENDS
common_math
mapping_sparse_pose_graph
transform_rigid_transform
)
google_test(mapping_3d_sparse_pose_graph_optimization_problem_test google_test(mapping_3d_sparse_pose_graph_optimization_problem_test
USES_EIGEN
USES_GLOG
SRCS SRCS
optimization_problem_test.cc optimization_problem_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
common_time
mapping_3d_sparse_pose_graph_optimization_problem
mapping_sparse_pose_graph_optimization_problem_options
transform_transform
) )

View File

@ -12,155 +12,32 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
google_library(sensor_collator
SRCS
collator.cc
HDRS
collator.h
DEPENDS
sensor_data
sensor_ordered_multi_queue
)
google_library(sensor_compressed_point_cloud
USES_EIGEN
SRCS
compressed_point_cloud.cc
HDRS
compressed_point_cloud.h
DEPENDS
common_math
common_port
mapping_3d_hybrid_grid
sensor_point_cloud
sensor_proto_sensor
)
google_library(sensor_configuration
USES_EIGEN
USES_GLOG
SRCS
configuration.cc
HDRS
configuration.h
DEPENDS
common_lua_parameter_dictionary
sensor_proto_configuration
transform_proto_transform
transform_rigid_transform
transform_transform
)
google_library(sensor_data
HDRS
data.h
DEPENDS
common_time
kalman_filter_pose_tracker
sensor_laser
sensor_point_cloud
transform_rigid_transform
)
google_library(sensor_laser
SRCS
laser.cc
HDRS
laser.h
DEPENDS
common_port
sensor_compressed_point_cloud
sensor_point_cloud
sensor_proto_sensor
transform_transform
)
google_library(sensor_ordered_multi_queue
USES_GLOG
SRCS
ordered_multi_queue.cc
HDRS
ordered_multi_queue.h
DEPENDS
common_blocking_queue
common_make_unique
common_port
common_time
sensor_data
)
google_library(sensor_point_cloud
USES_EIGEN
USES_GLOG
SRCS
point_cloud.cc
HDRS
point_cloud.h
DEPENDS
sensor_proto_sensor
transform_rigid_transform
transform_transform
)
google_library(sensor_voxel_filter
SRCS
voxel_filter.cc
HDRS
voxel_filter.h
DEPENDS
common_lua_parameter_dictionary
common_math
mapping_3d_hybrid_grid
sensor_point_cloud
sensor_proto_adaptive_voxel_filter_options
)
google_test(sensor_collator_test google_test(sensor_collator_test
SRCS SRCS
collator_test.cc collator_test.cc
DEPENDS
common_lua_parameter_dictionary_test_helpers
common_make_unique
common_time
sensor_collator
sensor_proto_sensor
) )
google_test(sensor_compressed_point_cloud_test google_test(sensor_compressed_point_cloud_test
SRCS SRCS
compressed_point_cloud_test.cc compressed_point_cloud_test.cc
DEPENDS
sensor_compressed_point_cloud
) )
google_test(sensor_laser_test google_test(sensor_laser_test
SRCS SRCS
laser_test.cc laser_test.cc
DEPENDS
sensor_laser
) )
google_test(sensor_ordered_multi_queue_test google_test(sensor_ordered_multi_queue_test
SRCS SRCS
ordered_multi_queue_test.cc ordered_multi_queue_test.cc
DEPENDS
common_make_unique
sensor_ordered_multi_queue
) )
google_test(sensor_point_cloud_test google_test(sensor_point_cloud_test
SRCS SRCS
point_cloud_test.cc point_cloud_test.cc
DEPENDS
sensor_point_cloud
transform_transform
) )
google_test(sensor_voxel_filter_test google_test(sensor_voxel_filter_test
SRCS SRCS
voxel_filter_test.cc voxel_filter_test.cc
DEPENDS
sensor_voxel_filter
) )

View File

@ -1,32 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(sensor_proto_adaptive_voxel_filter_options
SRCS
adaptive_voxel_filter_options.proto
)
google_proto_library(sensor_proto_configuration
SRCS
configuration.proto
DEPENDS
transform_proto_transform
)
google_proto_library(sensor_proto_sensor
SRCS
sensor.proto
DEPENDS
transform_proto_transform
)

View File

@ -12,72 +12,12 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
add_subdirectory("proto")
google_library(transform_rigid_transform
USES_EIGEN
USES_GLOG
SRCS
rigid_transform.cc
HDRS
rigid_transform.h
DEPENDS
common_lua_parameter_dictionary
common_math
common_port
)
google_library(transform_rigid_transform_test_helpers
USES_EIGEN
HDRS
rigid_transform_test_helpers.h
DEPENDS
common_port
transform_rigid_transform
)
google_library(transform_transform
USES_EIGEN
SRCS
transform.cc
HDRS
transform.h
DEPENDS
common_math
transform_proto_transform
transform_rigid_transform
)
google_library(transform_transform_interpolation_buffer
USES_EIGEN
USES_GLOG
SRCS
transform_interpolation_buffer.cc
HDRS
transform_interpolation_buffer.h
DEPENDS
common_make_unique
common_time
mapping_proto_trajectory
transform_rigid_transform
transform_transform
)
google_test(transform_transform_interpolation_buffer_test google_test(transform_transform_interpolation_buffer_test
USES_EIGEN
SRCS SRCS
transform_interpolation_buffer_test.cc transform_interpolation_buffer_test.cc
DEPENDS
transform_rigid_transform
transform_rigid_transform_test_helpers
transform_transform_interpolation_buffer
) )
google_test(transform_transform_test google_test(transform_transform_test
SRCS SRCS
transform_test.cc transform_test.cc
DEPENDS
transform_rigid_transform
transform_rigid_transform_test_helpers
transform_transform
) )

View File

@ -1,18 +0,0 @@
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
google_proto_library(transform_proto_transform
SRCS
transform.proto
)

View File

@ -15,25 +15,9 @@
include(CMakeParseArguments) include(CMakeParseArguments)
macro(_parse_arguments ARGS) macro(_parse_arguments ARGS)
set(OPTIONS set(OPTIONS)
USES_BOOST
USES_CERES
USES_EIGEN
USES_GFLAGS
USES_GLOG
USES_LUA
USES_WEBP
USES_CAIRO
)
# Options only used by projects using Cartographers cmake files.
list(APPEND OPTIONS
USES_CARTOGRAPHER
USES_PCL
USES_YAMLCPP
)
set(ONE_VALUE_ARG) set(ONE_VALUE_ARG)
set(MULTI_VALUE_ARGS SRCS HDRS DEPENDS) set(MULTI_VALUE_ARGS SRCS)
cmake_parse_arguments(ARG cmake_parse_arguments(ARG
"${OPTIONS}" "${ONE_VALUE_ARG}" "${MULTI_VALUE_ARGS}" ${ARGS}) "${OPTIONS}" "${ONE_VALUE_ARG}" "${MULTI_VALUE_ARGS}" ${ARGS})
endmacro(_parse_arguments) endmacro(_parse_arguments)
@ -41,178 +25,16 @@ endmacro(_parse_arguments)
macro(_common_compile_stuff VISIBILITY) macro(_common_compile_stuff VISIBILITY)
set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}")
foreach(DEPENDENCY ${ARG_DEPENDS})
target_link_libraries("${NAME}" PUBLIC ${DEPENDENCY})
endforeach()
if(catkin_INCLUDE_DIRS)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${catkin_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${catkin_LIBRARIES})
add_dependencies("${NAME}" ${catkin_EXPORTED_TARGETS}
)
endif()
if(ARG_USES_EIGEN)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${EIGEN3_INCLUDE_DIR}")
target_link_libraries("${NAME}" PUBLIC ${EIGEN3_LIBRARIES})
endif()
if(ARG_USES_CERES)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${CERES_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${CERES_LIBRARIES})
endif()
if(ARG_USES_LUA)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${LUA_INCLUDE_DIR}")
target_link_libraries("${NAME}" PUBLIC ${LUA_LIBRARIES})
endif()
if(ARG_USES_BOOST)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${Boost_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${Boost_LIBRARIES})
endif()
if(ARG_USES_WEBP)
target_link_libraries("${NAME}" PUBLIC webp)
endif()
# We rely on Ceres to find glog and gflags for us.
if(ARG_USES_GLOG)
target_link_libraries("${NAME}" PUBLIC glog)
endif()
if(ARG_USES_GFLAGS)
target_link_libraries("${NAME}" PUBLIC gflags)
endif()
if(ARG_USES_CARTOGRAPHER)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${CARTOGRAPHER_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${CARTOGRAPHER_LIBRARIES})
endif()
if(ARG_USES_PCL)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${PCL_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${PCL_LIBRARIES})
foreach(DEFINITION ${PCL_DEFINITIONS})
set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${DEFINITION}")
endforeach()
endif()
if(ARG_USES_YAMLCPP)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${YAMLCPP_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${YAMLCPP_LIBRARIES})
endif()
if(ARG_USES_CAIRO)
target_include_directories("${NAME}" SYSTEM ${VISIBILITY}
"${CAIRO_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${CAIRO_LIBRARIES})
endif()
set_target_properties(${NAME} PROPERTIES set_target_properties(${NAME} PROPERTIES
COMPILE_FLAGS ${TARGET_COMPILE_FLAGS}) COMPILE_FLAGS ${TARGET_COMPILE_FLAGS})
# Add the binary directory first, so that port.h is included after it has target_include_directories(${NAME} PUBLIC ${PROJECT_NAME})
# been generated. target_link_libraries(${NAME} PUBLIC ${PROJECT_NAME})
target_include_directories("${NAME}" ${VISIBILITY}
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)
# Figure out where to install the header. The logic goes like this: either
# the header is in the current binary directory (i.e. generated, like port.h)
# or in the current source directory - a regular header. It could also
# already be absolute (i.e. generated through a google_proto_library rule).
# In all cases we want to install the right header under the right subtree,
# e.g. foo/bar/baz.h.in will be installed from the binary directory as
# 'include/foo/bar/baz.h'.
foreach(HDR ${ARG_HDRS})
if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${HDR})
set(ABS_FIL "${CMAKE_CURRENT_BINARY_DIR}/${HDR}")
file(RELATIVE_PATH REL_FIL ${CMAKE_BINARY_DIR} ${ABS_FIL})
elseif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${HDR})
set(ABS_FIL "${CMAKE_CURRENT_SOURCE_DIR}/${HDR}")
file(RELATIVE_PATH REL_FIL ${CMAKE_SOURCE_DIR} ${ABS_FIL})
else()
set(ABS_FIL "${HDR}")
file(RELATIVE_PATH REL_FIL ${CMAKE_BINARY_DIR} ${ABS_FIL})
endif()
get_filename_component(INSTALL_DIR ${REL_FIL} DIRECTORY)
install(
FILES
${ABS_FIL}
DESTINATION
include/${INSTALL_DIR}
)
endforeach()
endmacro(_common_compile_stuff) endmacro(_common_compile_stuff)
# Create a static library out of other static libraries by running a GNU ar function(google_test NAME)
# script over the dependencies. _parse_arguments("${ARGN}")
function(google_combined_library NAME)
set(MULTI_VALUE_ARGS SRCS)
cmake_parse_arguments(ARG "" "" "${MULTI_VALUE_ARGS}" ${ARGN})
# CMake requires a source file for each library, so we create a dummy file
# that is empty. Its creation depends on all libraries we want to include in
# our combined static library, i.e. it will be touched whenever any of them
# change, which means that our combined library is regenerated.
set(DUMMY_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${NAME}_dummy.cc)
add_custom_command(
OUTPUT ${DUMMY_SOURCE}
COMMAND cmake -E touch ${DUMMY_SOURCE}
DEPENDS ${ARG_SRCS}
)
# Just a dummy library, we will overwrite its output directly after again
# with its POST_BUILD step.
google_library(${NAME}
SRCS ${DUMMY_SOURCE}
DEPENDS ${ARG_SRCS}
)
# We will delete the static lib generated by the last call to
# 'google_library' and recreate it using a GNU ar script that combines the
# SRCS into the NAME.
# TODO(hrapp): this is probably not very portable, but should work fine on
# Linux.
set(AR_SCRIPT "")
set(AR_SCRIPT "CREATE $<TARGET_FILE:${NAME}>\n")
foreach(SRC ${ARG_SRCS})
set(AR_SCRIPT "${AR_SCRIPT}ADDLIB $<TARGET_FILE:${SRC}>\n")
endforeach()
set(AR_SCRIPT "${AR_SCRIPT}SAVE\nEND\n")
set(AR_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/${NAME}_ar.script")
file(GENERATE OUTPUT ${AR_SCRIPT_FILE} CONTENT ${AR_SCRIPT})
add_custom_command(TARGET ${NAME} POST_BUILD
COMMAND rm $<TARGET_FILE:${NAME}>
COMMAND ${CMAKE_AR}
ARGS -M < ${AR_SCRIPT_FILE}
COMMENT "Recombining static libraries into ${NAME}."
)
endfunction()
# Create a variable 'VAR_NAME'='FLAG'. If VAR_NAME is already set, FLAG is
# appended.
function(google_add_flag VAR_NAME FLAG)
if (${VAR_NAME})
set(${VAR_NAME} "${${VAR_NAME}} ${FLAG}" PARENT_SCOPE)
else()
set(${VAR_NAME} "${FLAG}" PARENT_SCOPE)
endif()
endfunction()
macro(_common_test_stuff)
add_executable(${NAME} add_executable(${NAME}
${ARG_SRCS} ${ARG_HDRS} ${ARG_SRCS} ${ARG_HDRS}
) )
@ -222,33 +44,7 @@ macro(_common_test_stuff)
target_include_directories("${NAME}" SYSTEM PRIVATE target_include_directories("${NAME}" SYSTEM PRIVATE
"${GMOCK_INCLUDE_DIRS}") "${GMOCK_INCLUDE_DIRS}")
target_link_libraries("${NAME}" PUBLIC ${GMOCK_LIBRARIES}) target_link_libraries("${NAME}" PUBLIC ${GMOCK_LIBRARIES})
endmacro()
function(_google_catkin_test NAME)
if(NOT "${CATKIN_ENABLE_TESTING}")
return()
endif()
_parse_arguments("${ARGN}")
_common_test_stuff()
# Copied from the catkin sources. Tracked in ros/catkin:#830.
add_dependencies(tests ${NAME})
get_target_property(_target_path ${NAME} RUNTIME_OUTPUT_DIRECTORY)
set(cmd "${_target_path}/${NAME} --gtest_output=xml:${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}/gtest-${NAME}.xml")
catkin_run_tests_target("gtest" ${NAME} "gtest-${NAME}.xml"
COMMAND ${cmd}
DEPENDENCIES ${NAME}
WORKING_DIRECTORY ${ARG_WORKING_DIRECTORY})
endfunction()
function(google_test NAME)
if (catkin_INCLUDE_DIRS)
_google_catkin_test(${ARGV})
return()
endif()
_parse_arguments("${ARGN}")
_common_test_stuff()
add_test(${NAME} ${NAME}) add_test(${NAME} ${NAME})
endfunction() endfunction()
@ -264,64 +60,14 @@ function(google_binary NAME)
install(TARGETS "${NAME}" RUNTIME DESTINATION bin) install(TARGETS "${NAME}" RUNTIME DESTINATION bin)
endfunction() endfunction()
function(google_library NAME) # Create a variable 'VAR_NAME'='FLAG'. If VAR_NAME is already set, FLAG is
_parse_arguments("${ARGN}") # appended.
function(google_add_flag VAR_NAME FLAG)
add_library(${NAME} if (${VAR_NAME})
STATIC set(${VAR_NAME} "${${VAR_NAME}} ${FLAG}" PARENT_SCOPE)
${ARG_SRCS} ${ARG_HDRS} else()
) set(${VAR_NAME} "${FLAG}" PARENT_SCOPE)
set_property(TARGET "${NAME}" PROPERTY POSITION_INDEPENDENT_CODE ON) endif()
# Update the global variable that contains all static libraries.
SET(ALL_LIBRARIES "${ALL_LIBRARIES};${NAME}" CACHE INTERNAL "ALL_LIBRARIES")
# This is needed for header only libraries. While they do not really mean
# anything for cmake, they are useful to make dependencies explicit.
set_target_properties(${NAME} PROPERTIES LINKER_LANGUAGE CXX)
_common_compile_stuff("PUBLIC")
endfunction()
function(google_proto_library NAME)
_parse_arguments("${ARGN}")
set(PROTO_SRCS)
set(PROTO_HDRS)
foreach(FIL ${ARG_SRCS})
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
get_filename_component(FIL_WE ${FIL} NAME_WE)
get_filename_component(FIL_NAME ${FIL} NAME)
list(APPEND PROTO_SRCS "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
list(APPEND PROTO_HDRS "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
ARGS --cpp_out ${CMAKE_BINARY_DIR} -I
${CMAKE_SOURCE_DIR} ${ABS_FIL}
DEPENDS ${ABS_FIL}
COMMENT "Running C++ protocol buffer compiler on ${FIL}"
VERBATIM
)
endforeach()
set_source_files_properties(${PROTO_SRCS} ${PROTO_HDRS}
PROPERTIES GENERATED TRUE)
google_library("${NAME}"
SRCS "${PROTO_SRCS}"
HDRS "${PROTO_HDRS}"
DEPENDS "${ARG_DEPENDS}"
)
target_include_directories("${NAME}" SYSTEM "PUBLIC"
"${PROTOBUF_INCLUDE_DIR}")
# TODO(hrapp): This should not explicityly list pthread and use
# PROTOBUF_LIBRARIES, but that failed on first try.
target_link_libraries("${NAME}" PUBLIC ${PROTOBUF_LIBRARY} pthread)
endfunction() endfunction()
macro(google_initialize_cartographer_project) macro(google_initialize_cartographer_project)

View File

@ -78,51 +78,18 @@ def ExtractProjectIncludes(project_name, source):
"""Returns all locally included files.""" """Returns all locally included files."""
includes = set() includes = set()
for line in open(MaybeUseCmakeFile(source)): for line in open(MaybeUseCmakeFile(source)):
if source.endswith(".proto"): match = re.match(r'^#include "(' + project_name + r'/[^"]+)"', line)
match = re.match(r'^import "(' + project_name + r'/[^"]+)', line)
else:
match = re.match(r'^#include "(' + project_name + r'/[^"]+)"', line)
if match: if match:
includes.add(match.group(1)) includes.add(match.group(1))
return includes return includes
def ExtractUses(project_name, source):
"""Finds the options for the third_party libraries used."""
uses = set()
for line in open(MaybeUseCmakeFile(source)):
if re.match(r'^#include "Eigen/', line):
uses.add("USES_EIGEN")
if re.match(r"^#include <lua.hpp>", line):
uses.add("USES_LUA")
if re.match(r'^#include "ceres/', line):
uses.add("USES_CERES")
if re.match(r'^#include "glog/', line):
uses.add("USES_GLOG")
if re.match(r'^#include "gflags/', line):
uses.add("USES_GFLAGS")
if re.match(r'^#include ["<]boost/', line):
uses.add("USES_BOOST")
if re.match(r'^#include ["<]webp/', line):
uses.add("USES_WEBP")
if re.match(r'^#include ["<]pcl/', line):
uses.add("USES_PCL")
if re.match(r'^#include ["<]yaml-cpp/', line):
uses.add("USES_YAMLCPP")
if re.match(r'^#include ["<]cairo/', line):
uses.add("USES_CAIRO")
if project_name != "cartographer":
if re.match(r'^#include ["<]cartographer/', line):
uses.add("USES_CARTOGRAPHER")
return uses
def FindSourceFiles(basedir): def FindSourceFiles(basedir):
sources = set() sources = set()
for (directory, _, filenames) in os.walk(basedir): for (directory, _, filenames) in os.walk(basedir):
for filename in filenames: for filename in filenames:
ext = path.splitext(filename)[-1] ext = path.splitext(filename)[-1]
if ext in [".h", ".cc", ".proto"]: if ext in [".h", ".cc"]:
sources.add(path.join(directory, filename)) sources.add(path.join(directory, filename))
elif filename.endswith(".h.cmake"): elif filename.endswith(".h.cmake"):
sources.add(path.join(directory, path.splitext(filename)[0])) sources.add(path.join(directory, path.splitext(filename)[0]))
@ -188,10 +155,6 @@ def RunOnDirectory(root):
for s in srcs + hdrs: for s in srcs + hdrs:
relative_s = MakeRelative(s, base_directory) relative_s = MakeRelative(s, base_directory)
targets_by_src[relative_s] = target targets_by_src[relative_s] = target
if s.endswith(".proto"):
proto_stem = os.path.splitext(relative_s)[0]
targets_by_src[proto_stem + ".pb.h"] = target
targets_by_src[proto_stem + ".pb.cc"] = target
directories.add(directory) directories.add(directory)
for (directory, sources) in FindSourceFiles(root): for (directory, sources) in FindSourceFiles(root):
@ -201,13 +164,9 @@ def RunOnDirectory(root):
headers = set(fn for fn in sources if fn.endswith(".h")) headers = set(fn for fn in sources if fn.endswith(".h"))
sources -= headers sources -= headers
for h in sorted(headers): for h in sorted(headers):
srcs = []
name = prepend_module_name(path.basename(path.splitext(h)[0]))
cc_file = path.splitext(h)[0] + ".cc" cc_file = path.splitext(h)[0] + ".cc"
if cc_file in sources: if cc_file in sources:
sources.remove(cc_file) sources.remove(cc_file)
srcs.append(cc_file)
AddTarget("google_library", name, directory, srcs, [h])
tests = set(fn for fn in sources if fn.endswith("_test.cc")) tests = set(fn for fn in sources if fn.endswith("_test.cc"))
sources -= tests sources -= tests
@ -215,12 +174,6 @@ def RunOnDirectory(root):
name = prepend_module_name(path.basename(path.splitext(c)[0])) name = prepend_module_name(path.basename(path.splitext(c)[0]))
AddTarget("google_test", name, directory, [c], []) AddTarget("google_test", name, directory, [c], [])
protos = set(fn for fn in sources if fn.endswith(".proto"))
sources -= protos
for c in sorted(protos):
name = prepend_module_name(path.basename(path.splitext(c)[0]))
AddTarget("google_proto_library", name, directory, [c], [])
mains = set(fn for fn in sources if fn.endswith("_main.cc")) mains = set(fn for fn in sources if fn.endswith("_main.cc"))
sources -= mains sources -= mains
for c in sorted(mains): for c in sorted(mains):
@ -235,16 +188,6 @@ def RunOnDirectory(root):
# Write the CMakeLists.txt files. # Write the CMakeLists.txt files.
for directory in directories: for directory in directories:
targets_in_directory = [t for t in targets if t.directory == directory]
for target in targets_in_directory:
for src in target.srcs + target.hdrs:
for header in ExtractProjectIncludes(project_name, src):
dependant = targets_by_src[header]
if dependant.name == target.name:
continue
target.depends.add(dependant.name)
target.uses.update(ExtractUses(project_name, src))
cmake_file = path.join(directory, "CMakeLists.txt") cmake_file = path.join(directory, "CMakeLists.txt")
parts = GetNonGoogleTargetLines(cmake_file) parts = GetNonGoogleTargetLines(cmake_file)
@ -259,7 +202,7 @@ def RunOnDirectory(root):
dump(parts["START"]) dump(parts["START"])
del parts["START"] del parts["START"]
for target in targets_in_directory: for target in [t for t in targets if t.directory == directory]:
dump(target.Format(directory)) dump(target.Format(directory))
if target.name in parts: if target.name in parts:
dump(parts[target.name]) dump(parts[target.name])