美文网首页
find_package如何使用2020年1月12日

find_package如何使用2020年1月12日

作者: 斯派罗 | 来源:发表于2021-01-12 20:11 被阅读0次

    今天真是遇到一个超级难搞的问题,谁让我是小白的呢,不过还好解决了。

    问题是这样的,创建一个hello.so共享库,这个库里面有一个函数helloSlam()用来输出“hello SLAM”。现在的目标是希望创建一个新的工程,usehello调用hello这个库,有两种方法来引用这个库。

    1、include_directories(<包含hello.h在头文件在路径>);link_directories(<包含库文件的路径>)。最后再用target_link_library(usehello hello), add_executable(usehello main.cpp)

    2、第二种方法是使用find_package的方法,请看下面代码,

    首先要设置find_package的搜索目录,搜索目录设置成hello-config.cmake文件所在的目录。

    find_package调用方法

    待调用的hello库的hello-config.cmake文件就是工程描述文件,解释如何找到hello.h头文件和libhello.so库文件。不管CMAKE_MODULE_PATH定义的是什么,都要保证,在这个定义的目录下能找到hello-config.cmake工程描述文件。另外hello-config.cmake文件描述了在哪里可以找到头文件和库文件,所以可以把头文件和库文件安装到系统目录。

    更多有用的信息,参考《CMake实践》。

    Cmake规则的使用手册是:https://cmake.org/cmake/help/latest/command/find_library.html?highlight=find_library

    SLAM部分

    阅读文献综述,past, present, and future of simultaneous localization and mapping: Towards the robust-pereption age.

    g++命令有哪些参数?乍么填写参数可以更改生成的程序文件名。

    答:g++共有-c, -s, -o, -x, -E参数,分别对应,生成.obj(机器代码), .s(汇编代码),可执行文件,使文件后缀名无效(-x后面加none,表示取消这个功能),-E只激活预处理,不生成代码。

    怎么把库链接到可执行程序上?

    1、.so或者.a文件放到项目工程自定义的lib目录,把.h头文件放到自定义的include目录下。2、在CMakeLists.txt文件中填写以下INCLUDE_DIRECTORIES()和LIBRIARIES_DIRECTORIES(); 3、链接可执行文件和共享库。target_link_libriaries()

    阅读《Cmake实践》了解cmake的其它语法。

    如何使用find_package,

    ROS部分

    相关文章

      网友评论

          本文标题:find_package如何使用2020年1月12日

          本文链接:https://www.haomeiwen.com/subject/khisaktx.html