如何处理Eclipse CDT + Cygwin?

9
最近我安装了Eclipse Indigo Service Release 2(用于JAVA EE),并在线安装了CDT 8。然后我安装了最新版本的Cygwin,包括gcc、g++、gdb、make、binutils、automake等工具,并且设置了正确的环境变量PATH。
使用Cygwin GCC toolchain创建一个新的C++项目很容易,但在编写HelloWorld程序后,显示了很多错误和警告。
在使用外部构建器时,出现以下错误信息:
“Cannot run program "make": ?????????¨?”
在使用内部构建器时,终端会显示以下内容:
"g++ -IC:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\include\c++ -O0 -g3 -Wall -c -fmessage-length=0 -o src\test_cpp.o ..\src\test_cpp.cpp Error: Cannot run program "g++": ?????????¨? Build error occurred, build is stopped"
在Windows CMD和Cygwin Terminal中,g++和make都运行正常。
此外,Eclipse找不到包含的库文件,所以我不得不将路径C:\ cygwin \ lib \ gcc \ i686-pc-cygwin \ 4.5.3 \ include \ c ++添加到项目属性-> C / C ++ Building-> Settings。但是之后,在错误消息中仍然显示:
"'std' is ambiguous ' Invalid overload of 'endl' Symbol 'cout' could not be resolved"
在项目属性-> C / C ++ Building-> Discovery Options中,我将Discovery Profile scope设置为Configeration-wide,并将Discovery profile设置为GCC per file scanner info profile。

当你创建新项目时,是否选择了Cygwin工具链? - dbrank0
是的,但它仍然不起作用。 - user1377046
6个回答

6

首先,你需要设置Cygwin工具链,安装Cygwin时请确保安装以下软件包:

binutils
gcc
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
make

%cygwin%\bin添加到您的PATH环境变量中,然后打开Eclipse,当您打开一个新的c/cpp项目向导时,Cygwin工具链将被显示。


2

使用eclipse + CDT + cygwin-gcc编写“hello world”程序的所有基本步骤。

您可能错过了第3到7步的一些步骤。

  1. 安装cygwin和以下软件包:binutilsgcc-coregcc-g++gdbmake。如果之前没有安装这些软件包,请在安装cygwin后重新运行cygwin的setup.exe(请参阅此答案中的第3点),或者按照此答案中所述使用apt-cyg进行安装。
  2. 在eclipse中安装CDT插件,或者安装CDT eclipse
  3. 将Windows的path环境变量设置为包括cygwin bin目录路径(C:\Program Files\cygwin\setup\bin)和lib目录路径(C:\Program Files\cygwin\setup\lib)。将Windows的classpath环境变量设置为包括cygwin lib目录路径。
  4. 在Windows命令提示符下运行命令gccg++gdbmake,以检查安装的cygwin软件包是否可达并且不会给出命令未找到错误。对于gccg++make,它应该会给出输入或目标文件未找到的错误。对于gdb,它应该会启动gdb提示符,您可以在其中键入Quit来退出。
  5. 启动eclipse并执行File > New > C/C++ Project
  6. 选择C/C++ Managed build:enter image description here
    点击Next>
  7. 给项目取一个适当的名字。在工具链中选择Cygwin GCC
    enter image description here
    它应该会创建新项目,并从环境变量中指定的cygwin lib目录中包含所需的头文件:
    enter image description here
  8. 在项目资源管理器中右键单击创建的项目,悬停在上下文菜单中的“新建”上,然后单击“源文件夹”。将新源文件夹命名为src
    enter image description here
  9. 右键单击源文件夹并添加新的C源文件HelloWorld.center image description here
  10. 右键单击项目并选择“Build Project”。它应该会创建调试文件和可执行二进制文件:

第七步不清楚。包含的文件/文件夹被截断了。 - Amit Ruhela
第7步中只有第一张截图描述了该步骤中要执行的操作。第二张截图显示了执行该操作的效果。第二张图片的裁剪部分不应该是一个问题。 - Mahesha999

2
我曾遇到类似的错误,以下是对我有效的方法: 在设置中:'项目|属性|C/C++常规|索引器',我取消了 '允许启发式解析包含文件' 的选项并保存了设置。重新构建后,所有像“'std' is ambiguous ...”这样的错误都消失了。

2

您是否检查了您正在使用的二进制解析器?

右键单击您的项目,选择属性,C/C++构建,设置,二进制解析器选项卡,如果您使用的是Windows操作系统,请选择PE Windows解析器;如果您使用的是Linux操作系统,请选择Elf解析器。


0

我使用的Eclipse版本是Photon(4.8)。 我正在运行cygwin64版本2.10.0(0.325/5/3)。

我创建了一个新目录-foo-并在其中添加了以下文件:

CMakeLists.txt:

set(CMAKE_C_FLAGS "-g -O0")
set(CMAKE_CXX_FLAGS "-g -O0 --std=c++17")
add_executable (foo main.cpp)

请注意,源代码级别调试需要使用“-g -O0”。

main.cpp:

#include <iostream>

using namespace std;

int
main()
{
    cout << "Hello World" << endl;
    auto i = 5;
    cout << i << endl;
}

在 foo 目录中,我运行了:
cmake .
然后我打开了 eclipse。
文件->导入 C/C++->现有代码作为 Makefile 项目
点击下一步
我将现有代码位置设置为我的 foo 目录(通过浏览到它)
这会自动将我的项目名称设置为 foo(如果您喜欢,可以更改它)
在“索引器设置的工具链”中暂时设置“无”,然后完成。我们稍后会解决这个问题。
现在,在“项目资源管理器”窗格中,右键单击“foo”,然后转到“属性”
进入“C/C++构建”
进入“工具链编辑器”
取消选中“仅显示兼容的工具链”
在“当前工具链”下拉菜单中选择“Cygwin GCC”
点击“应用并关闭”
再次,在“项目资源管理器”窗格中,右键单击“foo”,然后转到“属性”
进入“C/C++构建”
进入“环境”

确保"CYGWIN_HOME"环境变量设置正确。默认设置为"C:\cygwin",但这对我来说不好,并且引起了很多问题。在我的情况下,它是C:\cygwin64

点击"应用并关闭"

现在再次右键单击foo项目,然后单击"构建项目"

在项目窗格中的foo下,单击main.cpp以显示它。在某个地方设置断点。

按F11

您应该看到之前设置的断点。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接