首页 > 代码库 > catkin_simple 的使用
catkin_simple 的使用
Catkin simple 可用于规范catkin package, 并简化CMakeLists
- Dependencies are just listed once as
build-depend
in thepackage.xml
, not also asrun-depend
etc. - Dependencies 无需在 CMakeLists.txt 中列出
- Explicit linking of dependencies is not needed anymore (e.g. no
target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES})
needed) - Explicit inclusion of catkin include not needed anymore (e.g. no
include_directories(${catkin_INCLUDES})
needed) - Export and installation commands are both one-liners.
工具安装:
cd $CATKIN_WS/srcgit clone git@github.com:catkin/catkin_simple.gitcd $CATKIN_WScatkin_make
示例代码:
https://github.com/simonlynen/catkin_and_catkin_simple
示例CMakelists 解释:
https://github.com/catkin/catkin_simple/blob/master/README.md
1 cmake_minimum_required(VERSION 2.8.3) 2 project(foo) 3 4 find_package(catkin_simple REQUIRED) 5 6 catkin_simple(ALL_DEPS_REQUIRED) //调用 catkin_simple,call package.xml中的所用build_depend,并do find_package(...)操作 7 //当所有的package 成功找到,a list of "catkin build dependencies"出现,并传给find_package(catkin REQUIRED COMPONETS...) 8 //然后增加local include 和 catkin include 目录,并传给include_directories(...) 9 //最后发现并编译ROS messages,services and actions which in msg/src/action 文件夹,注意当且仅当package.xml中build_depend 包含message_generation才执行该操作10 //同样查找并编译dynamic_reconfigure 文件in cfg文件夹,注意当且仅当build_depend 包含dynamic_reconfigure11 12 cs_add_library(my_lib src/my_lib.cpp) //首先call directly through to add_library13 //然后call target_link_libraries(my_lib ${catkin_LIBRARIES})去链接新库(注意build_depend需要包含新库)14 //最后it does some bookkeeping so that your library target can be implicitly used later???15 16 17 cs_add_executable(my_exec src/main.cpp)//calls CMake‘s add_executable(...) instead.18 target_link_libraries(my_exec my_lib) //注意这句话需要写出来 there is no way to enforce order of target creation. The executable is still automatically linked against the catkin libraries19 20 cs_install() //creates an installation rule for any libraries and executables you created with cs_ prefixed commands21 22 cs_install_scripts(scripts/my_script.py) 23 24 cs_export() //calls catkin_package(...) under the hood, extending that call with any libraries created and catkin_depends found automatically with catkin_simple
存在的限制:
1 There are several known assumptions and incorrect behaviors in catkin_simple which are a result of the trade-off of correctness for convenience.2 3 There is no warning when a catkin package is not found during find_package.4 There is over linking, as all libraries of all dependencies are linked against all targets indiscriminately.5 Assumes that the include folder is meant to be in the include path.6 If new .msg or .srv files are added, they will not be detected until you force CMake to run again7 All targets have a target dependency on any downstream message generation, which results in sub-optimal parallelization of targets, as there are unnecessary dependencies created.
catkin_simple 的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。