Eclipse + CDT + Cygwin:你如何修复"多个目标"错误?

Tre*_*ith 5 c eclipse cygwin makefile eclipse-cdt

更新1:我原来的帖子太长,模糊了真正的问题.我已经发现在调用Make时究竟是什么导致了"多个目标"错误.

更新2:我发现这个"多目标"错误是由GNU Make版本3.8.1引起的(参见here1here2).GNU Make 3.8.1是与Cygwin一起发布的当前GNU Make.总结链接:旧的v3.8.0处理窗口路径很好,而较新的v3.8.1报告了Windows路径的错误(也许它是来自FSF的被动攻击性攻击?).


当您在Eclipse + CDT + Cygwin中启动一个没有外部包含/库的新项目时,一切都适合我.

一旦我尝试使用外部包含/库,我就会收到"多个目标"错误.

以下是在Windows + Eclipse + CDT + Cygwin上重现错误所需的步骤:

  1. 项目属性 - > C/C++ Build - > Settings - > Tool Settings - > Cygwin C Compiler - > Includes - > Include Paths(-I) - > Add Button - > Pick directory - >"C:\ dir1\dir2"
  2. 我点击了构建.
  3. 它第一次构建时没有错误.
  4. 我再次点击构建...我得到构建错误"多个目标.停止.".
  5. 我点击错误.

Eclipse提取了一个makefile.当make从外部库中看到新包含文件的Windows路径时,会发生错误:

# NOTE: Error happens when the first "C:/" occurs
src/main.d src/main.o: ../src/main.c C:/dir1/dir2/ExternalLibrary.h
Run Code Online (Sandbox Code Playgroud)

Make得到错误"Multiple targets"的原因是因为它看到了":",它是Make语法的一部分,用于声明目标.如果有两个":",则输出错误,因为它不知道如何处理"多个目标".


我无法手动编辑makefile,因为它们会立即重新生成并被覆盖[UPDATE:by Eclipse-CDT].鉴于我无法手动编辑makefile.

  1. 有没有办法让Eclipse不使用"C:\"路径?或告诉make忽略"C:\"路径?
  2. 这是Eclipse + CDT + Cygwin的错误吗?
  3. 如果您使用Eclipse + CDT + Cygwin ...请伸出援助之手(我不想使用Visual Studios ......)!也许我使用Eclipse + CDT + cygwin错了?您如何获得外部图书馆的工作?

*非常非常沮丧*

试图保持开源和跨平台用户,

特雷弗

Tre*_*ith 3

事实证明,“多个目标”问题是由 Cygwin 安装的 GNU Make 的当前版本引起的。GNU Make 3.8.1 是当前随 Cygwin 一起发布的 GNU Make。

GNU Make 3.8.1 不处理包含“C:\”的 Windows 路径。因此,每当您的 make 文件具有带有“C:\”的 Windows 路径时,您都会收到构建错误“多个目标”。

我最终做的解决方案是下载一个固定的 GNU Make v3.8.1。请参阅此处 1此处 2。然后Eclipse+CDT+Cygwin又工作正常了。

更新(2015 年 2 月 5 日):使用更新的 cygwin 和新的 Make (4.0.x),问题就消失了。 https://superuser.com/questions/154418/where-do-i-get-make-for-cygwin