4

我有我想使用的 ac 函数,但那是用Intel编译器而不是gnu C编译器编译的。我正在使用cmake构建程序。(我实际上正在使用ROS,因此rosmake但基础是cmake所以我认为它更多的是一个 cmake 问题而不是一个ROS问题)。假设用iccis构建的文件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.cicc尝试包含该x.s文件:

rosbuild_add_executable(y y.cpp x.s) 

它不起作用。我应该对打电话的方式进行一些改变a()y.cpp?还是有其他方法可以链接它。

4

2 回答 2

7

使用 gcc 时,您可以.S使用 C 编译器编译文件(无需显式调用 asm)。可以告诉 CMake 这样做使用

set_property(SOURCE <myfile>.S PROPERTY LANGUAGE C)

对于您的每个.S文件。

于 2015-03-11T14:06:06.443 回答
3

要使用.s文件,您必须在 CMake 中启用汇编语言支持enable_language

您可以在此处找到更多信息:https ://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/languages/Assembler

于 2013-06-27T09:21:08.617 回答