下面错误主要是由于没有安装fmt,和在cmakelist里面需要添加fmt的编写。报错如下:
CMakeFiles/pose_graph_g2o_lie.dir/pose_graph_g2o_lie_algebra.cpp.o:在函数‘unsigned long long fmt::v8::detail::width_checker<fmt::v8::detail::error_handler>::operator()<float, 0>(float) [clone .isra.270]’中:pose_graph_g2o_lie_algebra.cpp:(.text.unlikely+0xc):对‘fmt::v8::detail::throw_format_error(char const*)’未定义的引用

安装fmt:
git clone https://hub.fastgit.org/fmtlib/fmt.git
cd fmt
mkdir build
cmake ..
make
sudo make install
cmakelist改为:
注意该set(CMAKE_CXX_FLAGS "-std=c++14 -O2 ${SSE_FLAGS} -msse4")
cmake_minimum_required(VERSION 2.8)
project(pose_graph)
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++14 -O2 ${SSE_FLAGS} -msse4")
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
# Eigen
include_directories("/usr/include/eigen3")
# sophus
find_package(Sophus REQUIRED)
include_directories(${Sophus_INCLUDE_DIRS})
# g2o
find_package(G2O REQUIRED)
include_directories(${G2O_INCLUDE_DIRS})
#fmt
find_package(FMT REQUIRED)
set(FMT_LIBRARIES fmt::fmt)
add_executable(pose_graph_g2o_SE3 pose_graph_g2o_SE3.cpp)
target_link_libraries(pose_graph_g2o_SE3
g2o_core g2o_stuff g2o_types_slam3d ${CHOLMOD_LIBRARIES}
fmt
)
add_executable(pose_graph_g2o_lie pose_graph_g2o_lie_algebra.cpp)
target_link_libraries(pose_graph_g2o_lie
g2o_core g2o_stuff
${CHOLMOD_LIBRARIES}
${Sophus_LIBRARIES}
fmt
)
主要多了一个找fmt和加入库文件的步骤,大家比对一下。

改完之后继续make

成功。
解决CMake编译fmt错误:安装与配置步骤
本文讲述了如何修复因缺少fmt库导致的编译错误,通过git clone安装fmt,调整CMakeLists.txt并添加fmt链接,确保fmt库的正确集成。经过这些步骤后,成功编译了pose_graph_g2o_lie项目。
699

被折叠的 条评论
为什么被折叠?



