如何强制Eclipse使用g++;而不是gcc? 我已经问过如何从C文件中调用C++构造函数。现在,当我成功地应用那里建议的这些方法时,我收到了一个错误

如何强制Eclipse使用g++;而不是gcc? 我已经问过如何从C文件中调用C++构造函数。现在,当我成功地应用那里建议的这些方法时,我收到了一个错误,c++,eclipse,gcc,compiler-construction,g++,C++,Eclipse,Gcc,Compiler Construction,G++,致命错误:字符串:没有终止此类文件或目录编译 此错误消息指向以下行:#在.cpp文件的头中包含 我已经发现c++/g++使用,c/gcc使用。问题变得更清楚了,当我检查控制台输出时,我看到带有错误的(.cpp)文件被gcc调用,它实际上需要,但这不是我的意图-我需要用g++编译它 现在我的问题是:我可以强制Eclipse使用特定的编译器吗?这里,例如g++(我听说它也可以编写C代码)——或者更好,有没有办法为工作区中的每个目录选择编译器 感谢您的建议回答您希望能够为每个子文件夹指定编译器的问题:

致命错误:字符串:没有终止此类文件或目录编译

此错误消息指向以下行:
#在.cpp文件的头中包含

我已经发现c++/g++使用
,c/gcc使用
。问题变得更清楚了,当我检查控制台输出时,我看到带有错误的(.cpp)文件被gcc调用,它实际上需要
,但这不是我的意图-我需要用g++编译它

现在我的问题是:我可以强制Eclipse使用特定的编译器吗?这里,例如g++(我听说它也可以编写C代码)——或者更好,有没有办法为工作区中的每个目录选择编译器


感谢您的建议

回答您希望能够为每个子文件夹指定编译器的问题

您正在搜索的可能是。这允许您指定工具链,例如预处理器、编译器和链接器。g++就是这样一个工具链的例子,就像clang++一样

您可以在eclipse中生成这样一个项目,手工编写makefiles,或者使用一些构建环境,例如,我建议使用更好的可移植代码

如果愿意,这两种解决方案都允许您为项目的每个目录指定编译器以及编译标志

可以通过完成以下步骤来实现:

  • 在源文件所在的文件夹中,右键单击并创建新文件<代码>新建>文件
  • 将其命名为
    makefile
    并单击
    Finish
  • 新的生成文件应在编辑器中弹出,并可按如下方式填充:

    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
    

  • 更改项目的设置可以强制eclipse使用g++进行编译:

    如何从eclipse编译?通过压缩Run?为了编译C++,你需要首先选择Eclipse中的C++项目,然后你可以像往常一样包含C头和源文件。我的项目与C++和C++文件混合,由于某些原因,Eclipse开始用C文件(GCC)编译,然后当触摸到.cp+sif时将其混淆,将代码< > -xc++ >代码>添加到命令行参数中,编译应该与<代码> GCC < /C> >很好。可能在某个位置有手动设置参数的设置。您可以在项目编译器设置中的某个位置指定它,我现在是移动的,因此无法检查确切位置。我以前使用它来强制其他版本(例如4.7或4.8)。如果其他一切都失败了,我知道我必须编写自己的makefile。但我希望,出于这个目的,也可以使用Eclipse Makefile——“Wizzard”。我正在寻找最简单的解决方案,我不必在意,无论什么时候事情发生变化。谢谢你的帮助。编写一个makefile与维护时间有关,我希望Eclipse能帮我完成这项工作。@user3085931这就是为什么我建议使用CMake,开始时可能会花费更多的时间,但维护起来要容易得多。现在我有大约20个(+20个头文件)和大约10个c文件,但文件来来往往,特别是当我尝试整合另一个项目时——因此我认为支出相当大。我正在寻找通用的解决方案,你认为cmake会让我远离配置“随机”生成文件的日子吗?我从未尝试过cmake,所以我无法评估这是否会成为一种消磨时间的选择,但我相信是的,因为它是关于在我的电脑上书写的own@user3085931在cmake和makefiles中,您可以使用所有(多种)本机工具自动编译所有c/c++文件。感谢您的贡献,几年前我离开了这里。然而,如果我没有记错,像你这样看似合理的方法不起作用,这就是为什么我要问如何强制使用g++。我相信这是一种自动的,伊柯丽斯在读C库时改变了编译器,或者只是一个bug。哈,我发现正确的方法是把Eclipse项目类型从C项目改为C++项目。谢谢你的提示,但是原谅我,我不能再检查它了。无论如何,我认为这是一种奇怪的行为,因为我一直认为Eclipse最终使用的是一个makefile来编译/链接,其中填充了上面显示的菜单中的参数。