编译没有ros的roscpp(使用g++)
Compile roscpp without ros (using g++)
我试图在不使用 ROS 的其余部分的情况下编译 roscpp(我只需要订阅一个节点,但拥有的节点使用旧版本的 ROS,我无法将我的程序与他应有的集成编译麻烦)。我从 git (https://github.com/ros/ros_comm) 下载了源代码,现在我需要编译它,但是 Cmake 抛出错误:
INFOBuilding GTest from source.
TODO: implement add_roslaunch_check() in rostest-extras.cmake.
CMake Error at CMakeLists.txt:8 (catkin_package_xml):
Unknown CMake command "catkin_package_xml".
我该如何构建它?我正在调用 cmake CMakeList.txt,但它不起作用。
我建议你使用rosinstall_generator编译你想要的包,比如roscpp。以下是步骤:
下载包及其依赖项:
rosinstall_generator roscpp --rosdistro <ROS_Distro that you use> --deps > roscpp_ros.rosinstall
wstool init src roscpp_ros.rosinstall -j8
rosdep install --from-path src -i -y
然后编译:
src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
编译后的包将在文件夹install_isolated中(与文件夹src同级)
使用此命令行直接使用 g++ 编译您的代码:
g++ yourtest.cpp -o yourtest -I/opt/ros/indigo/include -L/opt/ros/indigo/lib \
-Wl,-rpath,/opt/ros/indigo/lib -lroscpp -lrosconsole -lrostime \
-lroscpp_serialization -lboost_system -lboost_thread -pthread -lactionlib
其中 yourtest.cpp 是包含一些 ros 代码的 c++ 文件。
如果您使用的 ros 版本与 indigo 不同,请将 de indigo 字符串替换为您的版本的字符串。
我试图在不使用 ROS 的其余部分的情况下编译 roscpp(我只需要订阅一个节点,但拥有的节点使用旧版本的 ROS,我无法将我的程序与他应有的集成编译麻烦)。我从 git (https://github.com/ros/ros_comm) 下载了源代码,现在我需要编译它,但是 Cmake 抛出错误:
INFOBuilding GTest from source.
TODO: implement add_roslaunch_check() in rostest-extras.cmake.
CMake Error at CMakeLists.txt:8 (catkin_package_xml):
Unknown CMake command "catkin_package_xml".
我该如何构建它?我正在调用 cmake CMakeList.txt,但它不起作用。
我建议你使用rosinstall_generator编译你想要的包,比如roscpp。以下是步骤:
下载包及其依赖项:
rosinstall_generator roscpp --rosdistro <ROS_Distro that you use> --deps > roscpp_ros.rosinstall
wstool init src roscpp_ros.rosinstall -j8
rosdep install --from-path src -i -y
然后编译:
src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
编译后的包将在文件夹install_isolated中(与文件夹src同级)
使用此命令行直接使用 g++ 编译您的代码:
g++ yourtest.cpp -o yourtest -I/opt/ros/indigo/include -L/opt/ros/indigo/lib \
-Wl,-rpath,/opt/ros/indigo/lib -lroscpp -lrosconsole -lrostime \
-lroscpp_serialization -lboost_system -lboost_thread -pthread -lactionlib
其中 yourtest.cpp 是包含一些 ros 代码的 c++ 文件。
如果您使用的 ros 版本与 indigo 不同,请将 de indigo 字符串替换为您的版本的字符串。