ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Invoking "make cmake_check_build_system" failed

asked 2016-06-18 04:56:27 -0600

Hashir Shafi gravatar image

updated 2016-06-18 05:01:20 -0600

gvdhoorn gravatar image

I am using ROS indigo with Ubunty Trusty 14.04. I am following the ROS industrial tutorials and currently at http://aeswiki.datasys.swri.edu/rosit... . This is not the first time that I am facing this problem. Whenever I try to build my workspace after cloning any repository in the src sub-directory of my work space, I get errors. I had just cloned robotiq repository from http://github.com/ros-industrial and tried to build my workspace by typing catkin_make in the workspace but I got the following on terminal.

Base path: /home/hashir/industrial_training/training/work/1.2/catkin_ws
Source space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/src
Build space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/build
Devel space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel
Install space: /home/hashir/industrial_training/training/work/1.2/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/hashir/industrial_training/training/work/1.2/catkin_ws/build"
####
-- Using CATKIN_DEVEL_PREFIX: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel;/opt/ros/indigo
-- This workspace overlays: /home/hashir/industrial_training/training/work/1.2/catkin_ws/devel;/opt/ros/indigo
-- Using PYTHON_EXECUTABLE: /usr/bin/python
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/hashir/industrial_training/training/work/1.2/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.6.18
-- BUILD_SHARED_LIBS is on
WARNING: Package "ompl" does not follow the version conventions. It should not contain leading zeros (unless the number is 0).
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 11 packages in topological order:
-- ~~  - robotiq (metapackage)
-- ~~  - robotiq_c2_model_visualization
-- ~~  - robotiq_ethercat
-- ~~  - robotiq_c_model_control
-- ~~  - robotiq_force_torque_sensor
-- ~~  - robotiq_modbus_rtu
-- ~~  - robotiq_modbus_tcp
-- ~~  - robotiq_s_model_control
-- ~~  - robotiq_joint_state_publisher
-- ~~  - robotiq_action_server
-- ~~  - robotiq_s_model_visualization
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin metapackage: 'robotiq'
-- ==> add_subdirectory(robotiq/robotiq)
-- +++ processing catkin package: 'robotiq_c2_model_visualization'
-- ==> add_subdirectory(robotiq/robotiq_c2_model_visualization)
-- +++ processing catkin package: 'robotiq_ethercat'
-- ==> add_subdirectory(robotiq/robotiq_ethercat)
CMake Warning at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:76 (find_package):
  Could not find a package configuration file provided by "soem" with any of
  the following names:

    soemConfig.cmake
    soem-config.cmake

  Add the installation prefix of "soem" to CMAKE_PREFIX_PATH or set
  "soem_DIR" to a directory containing one of the above files.  If "soem"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  robotiq/robotiq_ethercat/CMakeLists.txt:4 (find_package)


-- Could not find the required component 'soem'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "soem" with any of
  the following names:

    soemConfig.cmake
    soem-config.cmake

  Add the installation prefix of "soem" to CMAKE_PREFIX_PATH or set
  "soem_DIR" to a directory containing one of the above files.  If "soem"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent ...
(more)
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
8

answered 2016-06-18 05:15:05 -0600

gvdhoorn gravatar image

updated 2016-06-18 05:18:18 -0600

Simply cloning a repository just gets you a copy of the sources in that repository. If/whenever a package uses functionality provided by external packages (ie: not found in the same repository), it will search for those dependencies using a find_package(..) call in CMakeLists.txt.

If you don't have those dependencies, CMake will present you with the error messages that you copy/pasted. This makes sense: CMake can't install those for you, so you have to make sure you already have them on your system.

Checking for and installing of dependencies is highly automated in ROS. After having cloned a repository, run:

rosdep install --from-paths /path/to/your/catkin_ws/src --ignore-src

after you've sourced the appropriate setup.bash. That will scan for packages in the source space of your catkin workspace, gather all dependencies, check you have those on your system, and if any are missing, it will install them (using the platform's package manager, see why rosdep instead of others?).

Note: you only need to do this if you are building things from source. Packages installed through package managers (ie: apt-get, rpm, etc) already have their dependencies resolved by the respective package manager. Always prefer to use the binary packages, if you can. Building from source takes time, wastes effort and, as you discovered, requires special care. The whole point of binary distributions is to be able to avoid this. In a typical ROS workflow, I'd only build a package from source if a) you actually want to do some development on the package itself (ie: not just make use of it), or b) it hasn't been released for your particular platform (arch) or ROS release.

Note 2: this is actually a question that has been asked many times before. I'm pretty certain a search (using either the built-in search or Google) turns up many answers ..

Note 3: don't use rosdep to install the package you are interested in itself. That's not what it's for. It only deals with dependencies.

edit flag offensive delete link more
0

answered 2017-06-08 04:37:21 -0600

tobinfinity gravatar image

In find_package(..) call in CMakeLists.txt ensure the needed packages are spelt correctly.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2016-06-18 04:56:27 -0600

Seen: 54,571 times

Last updated: Jun 08 '17