我已经问过如何从How to call a C++ constructor from a C-File中的C文件调用C ++构造函数。现在,当我成功应用这些建议的方法时,我收到错误
致命错误:字符串:没有此类文件或目录编译终止
此错误消息指向.cpp文件标题中的行#include <string>
。
我已经发现c ++ / g ++使用<string>
,c / gcc使用<string.h>
。问题变得清晰了,当我检查控制台输出时,我可以看到,带有错误的(.cpp)文件被gcc称为 ,实际上需要<string.h>
但是这不是我的意图 - 我需要用g ++编译它。
现在我的问题是:我可以强制Eclipse使用特定的编译器吗?在这里,例如g ++(我听说它也能够使用C代码。) - 或者更好的是,有没有办法为工作区中的每个目录选择编译器?
感谢您的建议
答案 0 :(得分:1)
回答尊重能够为每个子文件夹指定编译器的愿望:
您搜索的内容可能是 makefile project。这允许您指定工具链,例如预处理器,编译器和链接器。 g ++是这样一个工具链的一个例子,就像clang ++那样。
你可以在eclipse中生成这样的项目,手工编写makefile,或者使用一些构建环境,例如CMake,我建议使用它来获得更好的可移植代码。
如果您愿意,两种解决方案都允许您为项目的每个目录指定编译器和编译标志。
Writing a makefile for your existing C/C++ project可以通过完成以下步骤来实现:
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
答案 1 :(得分:0)