在CMake for ROS中查找源根目录

时间:2017-10-05 02:54:06

标签: cmake ros

使用CMake和ROS,可以得到如下目录树:

+src
  -CMakeLists.txt (symbolic link to toplevel.cmake)
  -CMakeExtras.txt (I want to use this)
  +computing
    +perception
      +per1
        -CMakeLists.txt
      +per2
        -CMakeLists.txt
    +detection
      +det1
        -CMakeLists.txt
  +sensing
    +dev1
      -CMakeLists.txt

CMakeExtras.txt我想设置CMake变量,只加载一次公共包等,例如:

set(CMAKE_CXX_FLAGS "-O3 -Wall ${CMAKE_CXX_FLAGS}")
find_package(Boost REQUIRED COMPONENTS thread)

我该怎么做? INCLUDE()命令很明显,但我无法编辑根级CMakeLists.txt,似乎没有允许INCLUDE("${OVERALL_SRC_DIR}/CMakeExtras.txt)之类的变量。我想:

catkin_make -DOVERALL_SRC_DIR=~/project/src

是一种解决方案,但有更简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

免责声明:这个问题对我来说仍然有点不清楚,如果答案不能反映您的需求,请提前道歉。

如果您要解决的问题是您有很多目录,例如src,其中相同的顶级CMakeLists.txt已关联,并且您想要包含特定的CMakeExtras.txt存在于每个特定目录中,然后您可以通过添加:

来解决此问题
include(${CMAKE_CURRENT_SOURCE_DIR}/CMakeExtras.txt)

到您的顶级CMakeLists.txt。根据{{​​3}}:

  

这是cmake当前正在处理的源目录的完整路径

并且应该解决这个问题(即变量是指正在处理的目录,而不是指使用它的CMakeLists.txt

如果您的问题是如何计算src路径,假设有顶级CMakelists.txt的链接,那么您只需要使用the documentation,其中:

  

是最新project()命令的源目录。