将.s文件与CMake链接

can*_*tan 4 gcc cmake icc ros

我有一个我想使用的ac函数,但是用Intel编译器而不是gnu C编译器编译.我正在使用cmake构建程序.(我实际上正在使用ROS,因此rosmake基础是cmake这样我认为它更像是一个问题,而不是一个ROS问题).假设使用的文件iccx.c并生成一个x.s文件.我想使用的功能a()来自x.c于我的文件y.cpp.在y.cpp我有:

#include "x.h" 
..... 
call a() 
Run Code Online (Sandbox Code Playgroud)

这工作,如果CMakeLists.txt

rosbuild_add_executable(y y.cpp x.c)

rosbuild_add_executable is analogous to add_executable(...) 
Run Code Online (Sandbox Code Playgroud)

但如果我建立x.cicc和尝试包括x.s文件,而不是:

rosbuild_add_executable(y y.cpp x.s) 
Run Code Online (Sandbox Code Playgroud)

它不起作用.有一些变化,我应该做出我打电话的方式a()y.cpp?或者是否有其他方式来链接它.

小智 7

使用gcc时,可以.S使用C编译器编译文件(不需要显式调用asm).可以告诉CMake使用

set_property(SOURCE <myfile>.S PROPERTY LANGUAGE C)
Run Code Online (Sandbox Code Playgroud)

为您的每个.S文件.