strasdat / Sophus

C++ implementation of Lie Groups using Eigen.
Other
2.03k stars 595 forks source link

Program wont build when i try to use Sophus::SE3d::exp(dx) on MAc #367

Closed tohsin closed 2 years ago

tohsin commented 2 years ago

*Program wont build when i try to perform the operation Sophus::SE3d::exp(dx) pose** I am not exactly sure what the problem is and I have tried to reinstall it multiple times with brew on my Mac

 brew install sophus

my cmakeList.txt

cmake_minimum_required(VERSION 3.22)
project(pose_estimation_3d_2d)
set(G2O_INCLUDE_DIRS /usr/local/include)
set(Sophus_INCLUDE_DIRS /usr/local/Cellar)

find_package(OpenCV REQUIRED)
find_package(OpenCV)
find_package(Eigen3 3.3 REQUIRED NO_MODULE)
find_package(G2O REQUIRED)
find_package(Sophus REQUIRED)

include_directories( ${OpenCV_INCLUDE_DIRS})

include_directories(
        ${OpenCV_INCLUDE_DIRS}
        ${G2O_INCLUDE_DIRS}
        ${Sophus_INCLUDE_DIRS}
        "/usr/include/eigen3/"
)
#include_directories(${g2o_INCLUDE_DIRS})

set(CMAKE_CXX_STANDARD 14)

add_executable(pose_estimation_3d_2d main.cpp)

target_link_libraries(pose_estimation_3d_2d Eigen3::Eigen)
target_link_libraries( pose_estimation_3d_2d
        ${G2O_LIBS}
        ${OpenCV_LIBS})

But every time I try to build I get

: && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  CMakeFiles/pose_estimation_3d_2d.dir/main.cpp.o -o pose_estimation_3d_2d  -Wl,-rpath,/usr/local/lib  /usr/local/lib/libopencv_gapi.4.5.5.dylib  /usr/local/lib/libopencv_stitching.4.5.5.dylib  /usr/local/lib/libopencv_alphamat.4.5.5.dylib  /usr/local/lib/libopencv_aruco.4.5.5.dylib  /usr/local/lib/libopencv_barcode.4.5.5.dylib  /usr/local/lib/libopencv_bgsegm.4.5.5.dylib  /usr/local/lib/libopencv_bioinspired.4.5.5.dylib  /usr/local/lib/libopencv_ccalib.4.5.5.dylib  /usr/local/lib/libopencv_dnn_objdetect.4.5.5.dylib  /usr/local/lib/libopencv_dnn_superres.4.5.5.dylib  /usr/local/lib/libopencv_dpm.4.5.5.dylib  /usr/local/lib/libopencv_face.4.5.5.dylib  /usr/local/lib/libopencv_freetype.4.5.5.dylib  /usr/local/lib/libopencv_fuzzy.4.5.5.dylib  /usr/local/lib/libopencv_hfs.4.5.5.dylib  /usr/local/lib/libopencv_img_hash.4.5.5.dylib  /usr/local/lib/libopencv_intensity_transform.4.5.5.dylib  /usr/local/lib/libopencv_line_descriptor.4.5.5.dylib  /usr/local/lib/libopencv_mcc.4.5.5.dylib  /usr/local/lib/libopencv_quality.4.5.5.dylib  /usr/local/lib/libopencv_rapid.4.5.5.dylib  /usr/local/lib/libopencv_reg.4.5.5.dylib  /usr/local/lib/libopencv_rgbd.4.5.5.dylib  /usr/local/lib/libopencv_saliency.4.5.5.dylib  /usr/local/lib/libopencv_sfm.4.5.5.dylib  /usr/local/lib/libopencv_stereo.4.5.5.dylib  /usr/local/lib/libopencv_structured_light.4.5.5.dylib  /usr/local/lib/libopencv_superres.4.5.5.dylib  /usr/local/lib/libopencv_surface_matching.4.5.5.dylib  /usr/local/lib/libopencv_tracking.4.5.5.dylib  /usr/local/lib/libopencv_videostab.4.5.5.dylib  /usr/local/lib/libopencv_viz.4.5.5.dylib  /usr/local/lib/libopencv_wechat_qrcode.4.5.5.dylib  /usr/local/lib/libopencv_xfeatures2d.4.5.5.dylib  /usr/local/lib/libopencv_xobjdetect.4.5.5.dylib  /usr/local/lib/libopencv_xphoto.4.5.5.dylib  /usr/local/lib/libopencv_shape.4.5.5.dylib  /usr/local/lib/libopencv_highgui.4.5.5.dylib  /usr/local/lib/libopencv_datasets.4.5.5.dylib  /usr/local/lib/libopencv_plot.4.5.5.dylib  /usr/local/lib/libopencv_text.4.5.5.dylib  /usr/local/lib/libopencv_ml.4.5.5.dylib  /usr/local/lib/libopencv_phase_unwrapping.4.5.5.dylib  /usr/local/lib/libopencv_optflow.4.5.5.dylib  /usr/local/lib/libopencv_ximgproc.4.5.5.dylib  /usr/local/lib/libopencv_video.4.5.5.dylib  /usr/local/lib/libopencv_videoio.4.5.5.dylib  /usr/local/lib/libopencv_imgcodecs.4.5.5.dylib  /usr/local/lib/libopencv_objdetect.4.5.5.dylib  /usr/local/lib/libopencv_calib3d.4.5.5.dylib  /usr/local/lib/libopencv_dnn.4.5.5.dylib  /usr/local/lib/libopencv_features2d.4.5.5.dylib  /usr/local/lib/libopencv_flann.4.5.5.dylib  /usr/local/lib/libopencv_photo.4.5.5.dylib  /usr/local/lib/libopencv_imgproc.4.5.5.dylib  /usr/local/lib/libopencv_core.4.5.5.dylib && :
Undefined symbols for architecture x86_64:
  "fmt::v8::detail::assert_fail(char const*, int, char const*)", referenced from:
      decltype(fp.begin()) fmt::v8::formatter<fmt::v8::basic_string_view<char>, char, void>::parse<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> >(fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>&) in main.cpp.o
      std::__1::make_unsigned<long>::type fmt::v8::detail::to_unsigned<long>(long) in main.cpp.o
      char const* fmt::v8::detail::parse_align<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&) in main.cpp.o
      char const* fmt::v8::detail::parse_width<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&) in main.cpp.o
      int fmt::v8::detail::parse_nonnegative_int<char>(char const*&, char const*, int) in main.cpp.o
      char const* fmt::v8::detail::do_parse_arg_id<char, char const* fmt::v8::detail::parse_width<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)::width_adapter&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&) in main.cpp.o
      char const* fmt::v8::detail::do_parse_arg_id<char, char const* fmt::v8::detail::parse_precision<char, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&)::precision_adapter&>(char const*, char const*, fmt::v8::detail::specs_checker<fmt::v8::detail::dynamic_specs_handler<fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler> > >&) in main.cpp.o
      ...
  "fmt::v8::detail::error_handler::on_error(char const*)", referenced from:
      void fmt::v8::detail::check_int_type_spec<fmt::v8::detail::error_handler&>(fmt::v8::presentation_type, fmt::v8::detail::error_handler&) in main.cpp.o
      bool fmt::v8::detail::check_char_specs<char, fmt::v8::detail::error_handler&>(fmt::v8::basic_format_specs<char> const&, fmt::v8::detail::error_handler&) in main.cpp.o
      fmt::v8::detail::float_specs fmt::v8::detail::parse_float_type_spec<fmt::v8::detail::error_handler&, char>(fmt::v8::basic_format_specs<char> const&, fmt::v8::detail::error_handler&) in main.cpp.o
      bool fmt::v8::detail::check_cstring_type_spec<fmt::v8::detail::error_handler&>(fmt::v8::presentation_type, fmt::v8::detail::error_handler&) in main.cpp.o
      void fmt::v8::detail::check_string_type_spec<fmt::v8::detail::error_handler&>(fmt::v8::presentation_type, fmt::v8::detail::error_handler&) in main.cpp.o
      void fmt::v8::detail::check_pointer_type_spec<fmt::v8::detail::error_handler&>(fmt::v8::presentation_type, fmt::v8::detail::error_handler&) in main.cpp.o
      fmt::v8::basic_format_parse_context<char, fmt::v8::detail::error_handler>::on_error(char const*) in main.cpp.o
      ...
  "fmt::v8::detail::throw_format_error(char const*)", referenced from:
      fmt::v8::detail::fill_t<char>::operator=(fmt::v8::basic_string_view<char>) in main.cpp.o
  "fmt::v8::vprint(fmt::v8::basic_string_view<char>, fmt::v8::basic_format_args<fmt::v8::basic_format_context<fmt::v8::appender, char> >)", referenced from:
      Sophus::SO3<double, 0>::expAndTheta(Eigen::Matrix<double, 3, 1, 0, 3, 1> const&, double*) in main.cpp.o
      Sophus::optional<double>::operator*() const in main.cpp.o
      Sophus::SO3Base<Sophus::SO3<double, 0> >::normalize() in main.cpp.o
  "std::__1::locale fmt::v8::detail::locale_ref::get<std::__1::locale>() const", referenced from:
      void fmt::v8::detail::format_value<char, Eigen::Transpose<Eigen::Matrix<double, 3, 1, 0, 3, 1> const> >(fmt::v8::detail::buffer<char>&, Eigen::Transpose<Eigen::Matrix<double, 3, 1, 0, 3, 1> const> const&, fmt::v8::detail::locale_ref) in main.cpp.o
      void fmt::v8::detail::format_value<char, Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> > >(fmt::v8::detail::buffer<char>&, Eigen::Transpose<Eigen::Matrix<double, 4, 1, 0, 4, 1> > const&, fmt::v8::detail::locale_ref) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
NikolausDemmel commented 2 years ago

Looks like you are not linking to fmt. Try adding Sophus::Sophus to target_link_libraries(pose_estimation_3d_2d ...).

tohsin commented 2 years ago

Thanks, Nicolaus the repo i followed didn't have that