leggedrobotics / open3d_slam

Pointcloud-based graph SLAM written in C++ using open3D library.
BSD 3-Clause "New" or "Revised" License
512 stars 51 forks source link

fmt compilation error #34

Closed braca51e closed 2 years ago

braca51e commented 2 years ago

Hello,

Seems like the conversions library is using fmt but I'm getting the following error:

Errors     << open3d_slam_ros:make /home/luis-usb/open3d_ws/logs/open3d_slam_ros/build.make.002.log                                
/usr/bin/ld: /home/luis-usb/open3d_ws/devel/.private/open3d_conversions/lib/libopen3d_conversions.so: undefined reference to `fmt::v9::vformat[abi:cxx11](fmt::v9::basic_string_view<char>, fmt::v9::basic_format_args<fmt::v9::basic_format_context<fmt::v9::appender, char> >)'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/mapping_node.dir/build.make:180: /home/luis-usb/open3d_ws/devel/.private/open3d_slam_ros/lib/open3d_slam_ros/mapping_node] Error 1
make[1]: *** [CMakeFiles/Makefile2:1835: CMakeFiles/mapping_node.dir/all] Error 2
nubertj commented 2 years ago

Hi @braca51e, Did you install open3d from source, or used the given ppa? When following the installation instructions in open3d_catkin (https://github.com/leggedrobotics/open3d_slam/blob/master/open3d_catkin/README.md) the ./install_deps.sh script includes libfmt-dev. When using the ppa, this should not be needed, but we can check again on our end.

braca51e commented 2 years ago

I did not install from source! I was able to compile successfully after I added fmt packakge in the cmakefile for open3d_conversions. I guess my fmt version was not compatible

nubertj commented 2 years ago

Okay, thanks a lot for your follow-up e-mail. We will test the implications and potentially include it in the next release. Until then we will leave this issue open, in case somebody else encounters the same issue.

mengchongxi commented 2 years ago

Hi, when i use EXPERT WAY: Build Open3d from source, i meet the same error

 fatal error: fmt/core.h: No such file or directory #include <fmt/core.h>

i think we should add ${Open3D_INCLUDE_DIRS}/open3d/3rdparty in the open3d_catkin

catkin_package(
INCLUDE_DIRS
${Open3D_INCLUDE_DIRS}
 ${Open3D_INCLUDE_DIRS}/open3d/3rdparty
)
nubertj commented 2 years ago

Hi @mengchongxi, Thanks a lot for your message. I tried to make the documentation a bit clearer in this PR: https://github.com/leggedrobotics/open3d_slam/pull/37

I tried all three scenarios and for me as well as in a docker it works. Feel free to reopen the issue, if the problem still persists

nubertj commented 2 years ago

@mengchongxi okay we also improved the open3d_catkin package :) maybe you can give it a try again and let us know? Best, Julian