我已经在如何从 C 文件调用 C++ 构造函数中询问了如何从 C 文件调用 C++ 构造函数。现在,当我成功应用那里建议的这些方法时,我收到一个错误
致命错误:字符串:没有这样的文件或目录编译终止
此错误消息指向 .cpp 文件标头中的行:
#include <string>
。
我已经发现
<string>
由 c++/g++ 使用,<string.h>
由 c/gcc 使用。好吧,问题变得更清楚了,当我检查控制台输出时,我可以看到,带有错误的 (.cpp) 文件被 gcc 称为 ,它实际上期望 <string.h>
,但这不是我的意图 - 我需要用 g++ 编译它。
现在我的问题是:我可以强制 Eclipse 使用特定的编译器吗?例如,这里只是 g++(我听说它也能够编写 C 代码。) - 或者更好的是,有没有办法为工作区中的每个目录选择编译器?
您正在搜索的可能是一个
makefile项目。这允许您指定工具链,例如预处理器、编译器和链接器。 g++ 是此类工具链的一个示例,就像 clang++ 一样。 您可以在 Eclipse 中生成这样的项目,手动编写 makefile,或者使用一些构建环境,例如 CMake
,我建议使用它以获得更好的可移植代码。如果您愿意,两种解决方案都允许您为项目的每个目录指定编译器以及编译标志。
为现有的 C/C++ 项目编写 makefile
可以通过完成以下步骤来实现:New > File
将其命名为
makefile
Finish
新的 makefile 应在编辑器中弹出,并可按如下方式填写:makefile:
all: executable_name
clean:
-rm main.o executable_name[.exe on windows] executable_name
executable_name: main.o
g++ -g -o executable_name main.o
main.o: main.cpp
g++ -c -g main.cpp