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

Fibonacci_Server.cpp is not compiled during catkin_make

asked 2019-02-25 16:14:19 -0500

rayrv9a gravatar image

updated 2019-02-26 07:06:48 -0500

CMakeText.txt file attached below. This is located in ~/catkin_ws/src/actionlib_tutorials:

cmake_minimum_required(VERSION 2.8.3)
project(actionlib_tutorials)

## Compile as C++11, supported in ROS Kinetic and newer
#add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  actionlib
  actionlib_msgs
  message_generation
  roscpp
  rospy
  std_msgs
)

## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)


## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

################################################
## Declare ROS messages, services and actions ##
################################################

## To declare and build messages, services or actions from within this
## package, follow these steps:
## * Let MSG_DEP_SET be the set of packages whose message types you use in
##   your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
## * In the file package.xml:
##   * add a build_depend tag for "message_generation"
##   * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
##   * If MSG_DEP_SET isn't empty the following dependency has been pulled in
##     but can be declared for certainty nonetheless:
##     * add a exec_depend tag for "message_runtime"
## * In this file (CMakeLists.txt):
##   * add "message_generation" and every package in MSG_DEP_SET to
##     find_package(catkin REQUIRED COMPONENTS ...)
##   * add "message_runtime" and every package in MSG_DEP_SET to
##     catkin_package(CATKIN_DEPENDS ...)
##   * uncomment the add_*_files sections below as needed
##     and list every .msg/.srv/.action file to be processed
##   * uncomment the generate_messages entry below
##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)

## Generate messages in the 'msg' folder
# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

## Generate services in the 'srv' folder
# add_service_files(
#   FILES
#   Service1.srv
#   Service2.srv
# )

## Generate actions in the 'action' folder
add_action_files(
  DIRECTORY action
  FILES Fibonacci.action
)

## Generate added messages and services with any dependencies listed here
generate_messages(
  DEPENDENCIES
  actionlib_msgs std_msgs
)

################################################
## Declare ROS dynamic reconfigure parameters ##
################################################

## To declare and build dynamic reconfigure parameters within this
## package, follow these steps:
## * In the file package.xml:
##   * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
## * In this file (CMakeLists.txt):
##   * add "dynamic_reconfigure" to
##     find_package(catkin REQUIRED COMPONENTS ...)
##   * uncomment the "generate_dynamic_reconfigure_options" section below
##     and list every .cfg file to be processed

## Generate dynamic reconfigure parameters in the 'cfg' folder
# generate_dynamic_reconfigure_options(
#   cfg/DynReconf1.cfg
#   cfg/DynReconf2.cfg
# )

###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
  INCLUDE_DIRS include
  LIBRARIES actionlib_tutorials
  CATKIN_DEPENDS actionlib actionlib_msgs message_generation roscpp rospy std_msgs
  DEPENDS system_lib
)

###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
include
${catkin_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)

## Declare a C++ library
# add_library(${PROJECT_NAME}
#   src/${PROJECT_NAME}/actionlib_tutorials.cpp
# )

## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries ...
(more)
edit retag flag offensive close merge delete

Comments

please don't upload your CMakeLists.txt but edit your question and copy'n'paste it. Then format it with the preformatted text button (the one with 1001010) on it.

Header files (except for the ones from messages) are not "generated" and don't end up in devel by default...

mgruhler gravatar image mgruhler  ( 2019-02-26 01:00:33 -0500 )edit

Can you add you CMakeLists.txt file that you're using to you question. That is probably where the problem lies, so we'll need to see it to be able to help you.

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2019-02-26 06:52:07 -0500 )edit

Above, at the top of this thread, I have added my CMakeText.txt file which is located at ~/catkin_ws/src/actionlib_tutorials. Per your comments above, can you please review and let me know what is wrong/missing in the CMakeText file?

rayrv9a gravatar image rayrv9a  ( 2019-02-27 07:06:27 -0500 )edit

To be honest, I'm not sure. I've compared it to some of my code that works with action servers and the CMakeLists.txt file looks like it should work. The only difference is that I'm on Ubuntu 16.04 and ROS kinetic, so I can't tell you if there should be a difference for the newer version.

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2019-02-27 07:59:58 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2019-02-27 15:01:17 -0500

rayrv9a gravatar image

I've been able to resolve this issue on my own. My end goal has been to build a Linorobot ( www.linorobot.org ) But, never having built a robot and being a complete newbie to ROS, I first went through all the beginner tutorials in ROS.org and then started going through the pdf book, ROS_by_example_v1. It recommends the tf and actionlib tutorials in addition to the ROS beginner ones. As a result of these tutorials, I have within my ~/catkin_ws/src folder three packages; beginner_tutorials, learning_tf2 & actionlib_tutorials. With all three packages in the src file, when I run catkin_make, the issue described in my original post occurs. However, if I remove the learning_tf2 package and run catkin_make again, everything works; fibonacci_server.cpp is compiled and linked and rosrun actionlib_tutorials fibonacci_server does invoke the server!

The issue is that when catkin_make processes the catkin package learning_tf2 (in the case of that also being in the src file), it throws an error relating to turtlesim. It then continues on and processes actionlib_tutorials but does not compile fibonacci_server.cpp nor does it make the .h include files associated with the action messages. Removing learning_tf2 from the src file, or fixing the dependency issue for turlesim, allows catkin_make to finish without errors (but still with a few warnings) and for the .cpp file to be compiled.

Thanks to those who tried to help solve this problem.

Onward.

Ray

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2019-02-25 16:14:19 -0500

Seen: 299 times

Last updated: Feb 27 '19