我有一个我想使用的ac函数,但是用Intel
编译器而不是gnu
C
编译器编译.我正在使用cmake
构建程序.(我实际上正在使用ROS
,因此rosmake
基础是cmake
这样我认为它更像是一个问题,而不是一个ROS
问题).假设使用的文件icc
是x.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.c
与icc
和尝试包括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
文件.