天天看點

問題 `CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):`

問題

CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):

1、具體問題

CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):
  generate_messages() must be called after add_service_files()
Call Stack (most recent call first):
  linlinshi/CMakeLists.txt:66 (add_service_files)


-- Configuring incomplete, errors occurred!
See also "/home/zby/linshi3/build/CMakeFiles/CMakeOutput.log".
See also "/home/zby/linshi3/build/CMakeFiles/CMakeError.log".
Makefile:754: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed
[email protected]:~/linshi3$ catkin_make
           

2、背景

在跟古月老師的ROS視訊課中出現的一個問題

在做話題訂閱釋出之後建立了功能包内的消息類型,如下所示:

問題 `CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):`

3、建立服務,添加服務相關配置

問題 `CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):`
問題 `CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):`

但是出現如下錯誤:

CMake Error at /opt/ros/kinetic/share/genmsg/cmake/genmsg-extras.cmake:155 (message):
  generate_messages() must be called after add_service_files()
Call Stack (most recent call first):
  linlinshi/CMakeLists.txt:66 (add_service_files)


-- Configuring incomplete, errors occurred!
See also "/home/zby/linshi3/build/CMakeFiles/CMakeOutput.log".
See also "/home/zby/linshi3/build/CMakeFiles/CMakeError.log".
Makefile:754: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

           

4、問題分析

添加服務配置應該在添加消息之上,意為先配置服務後配置消息

Generate_messages(DEPENDENCIES std_msgs)

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

add_service_files(FILES AddTwoInts.srv)

           

5、變更為

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

add_service_files(FILES AddTwoInts.srv)

Generate_messages(DEPENDENCIES std_msgs)
           

6、再次編譯,即可成功

[ 80%] Built target linlinshi_gencpp
Scanning dependencies of target client
Scanning dependencies of target server
[ 85%] Building CXX object linlinshi/CMakeFiles/client.dir/src/client.cpp.o
[ 90%] Building CXX object linlinshi/CMakeFiles/server.dir/src/server.cpp.o
[ 95%] Linking CXX executable /home/zby/linshi3/devel/lib/linlinshi/client
[100%] Linking CXX executable /home/zby/linshi3/devel/lib/linlinshi/server
[100%] Built target client
[100%] Built target server
[email protected]:~/linshi3$ 

           

繼續閱讀