2012-09-29 41 views
2

我最近开始使用ROS,遇到了一个问题。我需要使用一些需要SSE2,SSE3和SSSE3 CPU扩展的类。具有SSSE3标志的ROS(机器人操作系统)

我想修改我的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> 

,但它没有工作!

该代码在“Not-ROS-project”中工作正常,但不知何故cflags似乎被编译器忽略。

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

我需要把标志放在哪里?

回答

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")