I have a c function that I'd like to use but thats compiled with the Intel
compiler instead of the gnu
C
compiler. I'm using cmake
to build the program.
(I'm actually using ROS
and hence rosmake
but the base is cmake
so I think its more of a cmake issue than a ROS
issue).
Suppose the file built with icc
is x.c
and produces an x.s
file. I want to use the function a()
from x.c
in my file y.cpp
.
In y.cpp
I have:
#include "x.h"
.....
call a()
which works if CMakeLists.txt
has
rosbuild_add_executable(y y.cpp x.c)
rosbuild_add_executable is analogous to add_executable(...)
but if I build x.c
with icc
and try to include the x.s
file instead:
rosbuild_add_executable(y y.cpp x.s)
It doesnt work. Is there some change I should make to the way I call a()
in y.cpp
? or is there some other way to link it.
When using gcc, you can compile .S
files with your C compiler (no explicit invocation of asm needed). CMake can be told to do so using
set_property(SOURCE <myfile>.S PROPERTY LANGUAGE C)
for each of your .S
files.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With