2

我最近开始使用 ROS,但遇到了一个问题。我需要使用一些需要 SSE2、SSE3 和 SSSE3 CPU 扩展的类。

我试图编辑我的 ROS 包的 manifest.xml 文件,例如

<package>
  <description brief="topological_map_v1">
    topological_map_v1
  </description>
  <author>me</author>
  <license>BSD</license>
  <review status="unreviewed" notes=""/>
  <url>http://ros.org/wiki/topological_map_v1</url>

  <depend package="opencv2"/>
  <depend package="sensor_msgs"/>
  <depend package="rospy"/>
  <depend package="roscpp"/>

  <export>
     <cpp cflags="-msse2 -msse3 -mssse3 -I/ThirdParty/brisk -I/ThirdParty/brisk/agast"/>
     <intel_cpp cflags="-msse2 -msse3 -mssse3"/>
  </export>
</package>

但它没有用!

该代码在“非 ROS 项目”中运行良好,但不知何故,编译器似乎忽略了 cflags。

我正在使用支持芯片扩展的 LinuxMint (ubuntu 12.04)。

我需要把旗帜放在哪里?

4

1 回答 1

1

cflags需要在 CMakeLists.txt 文件中添加,如:

rosbuild_add_executable(ImgProcEngineNode src/ros_src/rosImgProcEngine.cpp)
rosbuild_add_compile_flags(ImgProcEngineNode "-c -O3 -fmessage-length=0 -march=native -msse2 -msse3 -mssse3 -I/home/me/topological_map/topological_map_v1/src/ThirdParty/brisk -I/home/me/topological_map/topological_map_v1/src/ThirdParty/brisk/agast")
于 2012-09-30T11:43:02.310 回答