我已经下载了用C编写的代码,我已经编写了一个CMakeLists.txt来通过Eclipse访问它,它工作得很好,并且可以编译。
我的个人代码是用C++编写的。我想从其中调用C代码,并且我还创建了CMakeLists.txt,它考虑了C代码的位置。
当我构建我的项目时,没有问题,只要我不做以下说明:
//在我的一个项目的.cpp中:
# ifdef __cplusplus
extern "C" {
# endif
#include "C_header_file_I_need.h"
# ifdef __cplusplus
}
# endif
//.cpp的核心
给出的错误告诉我,该程序正在尝试使用C++编译器编译C代码,因此:
- 嵌套函数
无效 - ..
都不被编译器接受。
我考虑过改编C程序,但工作量很大……
由于每个CMakeList只有一个编译器,我想知道如何能够使用CMakeList独立编译项目的两个部分并将它们链接起来(因为我需要它在任何平台上工作)。
感谢您的帮助,请毫不犹豫地告诉我您需要查看哪些文件/日志。
1条答案
按热度按时间bis0qfac1#
如果您只在C中使用C函数,而不是在C中使用C函数,则可以将它们全部单独编译为目标文件(.o),然后在单独的步骤中将它们链接在一起。请记住,您的C++代码中仍然需要
extern "C"
才能正常工作。(如果您有兴趣自动执行此操作,CMake会根据文件扩展名自动执行此操作)
编辑:当我发布这篇文章时,我还没有意识到评论已经说明了这一切。