学习pcl库时,关于CMakeLists.txt的编写

最近在学习pcl库时,运用官方的CMakeLists.txt时总是会出现各种各样的问题,于是就抽一些时间来专门学一下cmake,将自己总结的做一个简单的记录.

这里是参考的几篇写的很好的解释:
https://blog.csdn.net/u013019296/article/details/103637792.
https://blog.csdn.net/xuehuafeiwu123/article/details/53929834.
https://blog.csdn.net/bigdog_1027/article/details/79113342.

下面是自己做的总结:

  1. 定义最小版
    cmake_minimum_required(version 2.8.3)

  2. 项目名称
    project(demo) //这里的demo为工程文件夹名称

  3. 依赖功能包,至少依赖一个关于catkin的功能包
    find_package(catkin_REQUIRED)

    如果要使用c++和Boost,需要包含Boost,并且指明类型,例如使用Boost threads(多线程相关)
    find_package(Boost REQUIRED COMPONENTS thread)

  4. catkin_package()
    是catkin支持的CMake宏指令,用来向编译系统指明catkin_spesific的信息,而编译系统用来生成PKG-config和CMake files
    这里需要注意的是,该函数必须放在add_library() 和 add_executable() 之前

  5. include_directories()
    参数形式 *_INCLUDE_DIRS,变量为 find_package路径和其他需要包含的路径
    例如:include_directories(include ${catkin_INCLUDE_DIRS}

  6. find_package()
    find_package()命令是用来查找依赖包的,可以把一整个依赖包的头文件包含路径、库路径、库名字、版本号等情况都获取到,后续只管用就好了.

  7. link_directories()
    用来加载外加的库函数路径

  8. add_excutable()
    使用给定的源文件,为工程引入一个可执行文件

  9. add_dependencies()
    一般来说用不到。用到的情况就是两个targets有依赖关系(通过target_link_libraries解决)并且依赖库也是通过编译源码产生的。这时候一句add_dependencies可以在直接编译上层target时,自动检查下层依赖库是否已经生成。没有的话先编译下层依赖库,然后再编译上层target,最后link depend target

  10. target_link_libraries()
    添加链接库;将目标文件与库文件进行链接.

最后给出示例的CMakeLists.txt:
CMake结合PCL库学习

相关文章:

  • 2020-10-27
  • 2021-12-18
  • 2021-08-05
  • 2021-12-30
  • 2021-11-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案