视觉slam十四讲(第二版)ch13 编译cmakelist报错:

本文详细记录了解决Clion编译过程中遇到的GTest和GFlags缺失问题,包括升级CMake版本、安装依赖库、调整CMakeLists.txt配置及源码安装GFlags的过程。
使用clion打开ch13文件夹编译的时候报错:
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_MAIN_LIBRARY) Call Stack

是因为没有安装googletest,参照这篇博客安装时

https://blog.youkuaiyun.com/weixin_44401286/article/details/101796958

编译遇到了问题:
cmake ../googletest/
输出错误如下:
CMake Error at CMakeLists.txt:13 (if):
  if given arguments:

    "CMAKE_VERSION" "VERSION_GREATER_EQUAL" "3.1"

  Unknown arguments specified

-- Configuring incomplete, errors occurred!
See also "/home/alexander/Downloads/slambook2-master/3rdparty/googletest-master/build/CMakeFiles/CMakeOutput.log".

找到问题:

https://github.com/google/googletest/issues/2711

可能是cmake版本不够高导致的,尝试升级cmake:

https://blog.youkuaiyun.com/qq_32526087/article/details/88616116

安装新版本cmake的中途又出现了问题:
Curses libraries were not found. Curses GUI for CMake will not be built.

网上查询到是因为没有这个库导致的,所以安装:

sudo apt-get install libcurl4-openssl-dev

然后删除整个文件夹,重新解压压缩包,新建build编译cmake3.11.3

cmake ../googletest/
make
但是make又出了问题:
 static bool PortableLocaltime(time_t seconds, struct tm* out) {
             ^
cc1plus: all warnings being treated as errors
CMakeFiles/gtest.dir/build.make:62: recipe for target 'CMakeFiles/gtest.dir/src/gtest-all.cc.o' failed
make[2]: *** [CMakeFiles/gtest.dir/src/gtest-all.cc.o] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/gtest.dir/all' failed
make[1]: *** [CMakeFiles/gtest.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

最后直接按照博客中提供的方法成功解决!

解决办法:

在安装包的googletest文件夹下(/home/bruce/software/googletest-master/googletest)找到CmakeLists.txt, 在其中添加如下语句:

SET(CMAKE_CXX_FLAGS "-std=c++0x")

再次make,便可以成功!最后不要忘记把他们加入自己的库文件夹中:

sudo cp libgtest*.a  /usr/lib 
sudo cp –a /home/bruce/software/googletest-master/googletest/include/gtestt /usr/include

其中libgtest文件在build文件夹下的lib文件夹中。

接下来编译ch13又发生了下一个错误:
 By not providing "FindGFlags.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "GFlags", but
  CMake did not find one.

  Could not find a package configuration file provided by "GFlags" with any
  of the following names:

    GFlagsConfig.cmake
    gflags-config.cmake

查看自己的文件,gflas包是有安装的,但最后还是选择重新源码安装了一次:

git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=gflags ../ 
make -j4
sudo make install

接下来重新reload cmakelist显示成功!

### 关于《视觉SLAM十四》第七章实践中的CMakeLists.txt 对于《视觉SLAM十四》第七章实践中涉及的`CMakeLists.txt`配置,该文件用于定义如何构建项目及其依赖关系。为了确保项目的顺利编译与运行,在此提供一个适用于本章节实验的基础模板。 #### 基础设置部分 ```cmake cmake_minimum_required(VERSION 3.5) project(SLAM_Chapter7) set(CMAKE_CXX_STANDARD 14) ``` 上述代码设定了最低本需求并命名了当前项目[^1]。 #### 查找必要的第三方库 针对ORB-SLAM系列以及其他基于特征点匹配算法的应用程序而言,OpenCV是一个不可或缺的部分。因此需要正确指定其路径: ```cmake if(NOT DEFINED ENV{OPENCV_DIR}) message(FATAL_ERROR "Please specify the path of OpenCV using OPENCV_DIR environment variable.") endif() set(OpenCV_DIR $ENV{OPENCV_DIR}) find_package(OpenCV 4.0 REQUIRED) # 使用较新本以获得更好的兼容性和性能优化 include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${OpenCV_LIBRARY_DIRS}) add_definitions(${OpenCV_DEFINITIONS}) ``` 这段脚本首先检查环境变量中是否存在指向OpenCV安装位置的信息;如果不存在,则提示用户设定相应参数。接着尝试寻找特定本以上的OpenCV包,并将其头文件夹加入到包含路径列表里,同时链接相应的静态/共享库][^[^35]。 #### 添加源码及目标产物声明 接下来要做的就是告知CMake哪些是待处理的目标文件(即`.cpp`, `.h`),并将它们组合起来形成最终可执行文件或者库的形式: ```cmake aux_source_directory(. DIR_SRCS) add_executable(chapter7_example ${DIR_SRCS}) target_link_libraries(chapter7_example ${OpenCV_LIBS}) install(TARGETS chapter7_example DESTINATION bin) ``` 这里通过辅助函数获取工作目录下的所有源文件名存入变量`${DIR_SRCS}`之中,之后创建名为`chapter7_example`的新应用程序实例并与先前发现过的OpenCV资源建立连接关系。最后一步则是安排好成品放置的位置以便后续部署操作[^2]. #### 定制化选项调整 考虑到不同读者可能拥有各异的操作系统平台或是个人偏好差异,允许一定程度上的灵活性是非常重要的: ```cmake option(BUILD_SHARED_LIBS "Build shared libraries instead of static ones." ON) if (${BUILD_SHARED_LIBS}) add_library(my_custom_lib SHARED my_custom_code.cpp) else() add_library(my_custom_lib STATIC my_custom_code.cpp) endif() ``` 以上片段展示了怎样让用户自行决定是否产出动态还是静态形式的自定义组件[^4].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值