我有一个我想使用的c函数,但是用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()
如果CMakeLists.txt
有
rosbuild_add_executable(y y.cpp x.c)
rosbuild_add_executable is analogous to add_executable(...)
但如果我使用x.c
构建icc
并尝试包含x.s
文件:
rosbuild_add_executable(y y.cpp x.s)
它不起作用。我应该对我在a()
中调用y.cpp
的方式做出一些改变吗?或者是否有其他方式来链接它。
答案 0 :(得分:7)
使用gcc时,可以使用C编译器编译.S
文件(不需要显式调用asm)。可以告诉CMake使用
set_property(SOURCE <myfile>.S PROPERTY LANGUAGE C)
每个.S
个文件。
答案 1 :(得分:3)
要使用.s
个文件,您必须使用enable_language
在CMake中启用汇编语言支持。
您可以在此处找到更多信息:http://www.cmake.org/Wiki/CMake/Assembler