日食+;CDT&x2B;Cygwin:你是如何解决这个问题的;“多目标”;缺陷

日食+;CDT&x2B;Cygwin:你是如何解决这个问题的;“多目标”;缺陷,c,eclipse,makefile,cygwin,eclipse-cdt,C,Eclipse,Makefile,Cygwin,Eclipse Cdt,更新1: 我原来的帖子太长,掩盖了真正的问题。当调用Make时,我已经准确地发现了导致“多目标”错误的原因 更新2: 我发现这个“多目标”错误是由GNU Make版本3.8.1引起的(请参阅和)。GNU Make 3.8.1是当前随Cygwin发布的GNU Make。总结一下链接:旧的v3.8.0处理windows路径很好,新的v3.8.1报告windows路径错误(可能是FSF的被动攻击?) 当您在Eclipse+CDT+Cygwin中启动一个新项目时,没有外部includes/librar

更新1: 我原来的帖子太长,掩盖了真正的问题。当调用Make时,我已经准确地发现了导致“多目标”错误的原因

更新2: 我发现这个“多目标”错误是由GNU Make版本3.8.1引起的(请参阅和)。GNU Make 3.8.1是当前随Cygwin发布的GNU Make。总结一下链接:旧的v3.8.0处理windows路径很好,新的v3.8.1报告windows路径错误(可能是FSF的被动攻击?)


当您在Eclipse+CDT+Cygwin中启动一个新项目时,没有外部includes/libraries,一切都很好

当我尝试使用外部包含/库时,我就遇到了“多目标”错误

以下是在Windows+Eclipse+CDT+Cygwin上重现该漏洞所需的步骤:

  • 项目属性-->C/C++生成-->设置-->工具设置-->Cygwin C编译器-->包含-->包含路径(-I)-->添加按钮-->拾取目录-->“C:\dir1\dir2”
  • 我达到了身材
  • 它第一次构建时没有错误
  • 我再次点击build。。。我得到构建错误“多个目标,停止”
  • 我点击错误
  • Eclipse提取一个生成文件。make看到外部库中新包含文件的windows路径时会发生错误:

    # NOTE: Error happens when the first "C:/" occurs
    src/main.d src/main.o: ../src/main.c C:/dir1/dir2/ExternalLibrary.h
    
    Make获取错误“Multiple targets”的原因是它看到“:”,这是用于声明目标的Make语法的一部分。当有两个“:”时,会出错,因为它不知道如何处理“多个目标”


    我无法手动编辑makefiles,因为它们会立即重新生成和覆盖[UPDATE:by Eclipse CDT]。鉴于我无法手动编辑生成文件。

  • Eclipse有没有办法不使用“C:\”路径?或者告诉make忽略“C:\”路径?
  • 这是Eclipse+CDT+Cygwin错误吗?
  • 如果您使用Eclipse+CDT+Cygwin。。。请帮忙(我不想使用Visual Studio…)!也许我使用Eclipse+CDT+cygwin时出错了?如何让外部库包含正常工作?
  • *非常非常沮丧*

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

    Trevor发现“多目标”问题是由Cygwin安装的当前版本GNU Make引起的。GNU Make 3.8.1是当前随Cygwin发布的GNU Make

    GNU Make 3.8.1不处理包含“C:\”的windows路径。因此,每当make文件的windows路径为“C:\”时,就会出现“多个目标”的生成错误

    我最终的解决方案是下载一个固定的GNU Make v3.8.1。看到或看到。然后Eclipse+CDT+Cygwin又恢复了正常工作。

    更新(2015年2月5日): 有了更新的cygwin和新的Make(4.0.x),问题就消失了。
    也有这样的问题。问题是我在项目设置中包含了路径。然后我有了绝对路径。使用相对路径在文件夹设置中包含路径时,效果很好。

    在更新cygwin之后,我仍然遇到了eclipse/CDT Juno的同样问题

    要解决此问题,请执行以下操作: 您需要make 3.80-1或更高版本,这需要cygintl-2.dll。 从下载make3.80-1

    以及所需的Dll

    从某处提取

    将cygwin/bin中的make重命名为makeVersion,例如make3.82.90

    复制cygintl-2.dll并使其成为cygwin/bin

    尝试在eclipse中构建项目两次,问题应该会消失


    gerdi

    [脚注1]这是我读到的一个例子。这个链接描述了我遇到的错误。。。bug报告来自bugs.eclipse.org和2005年。他们的解决方案是:编辑make文件,获取不同的make版本,等等。我不能更改make的版本。我不能手动编辑makefile,因为它会被自动覆盖。[脚注2]这是我读到的另一个例子。这个链接描述了我遇到的错误。。。错误报告来自stackoverflow.com。上面的stackoverflow.com链接类似,但不是重复的。。。因为上面链接中的解决方案对“手动编辑makefile”的解决方案很满意,而这对我来说不是一个选项。(他们还建议“从网络驱动器运行所有东西”…或从cygwin shell运行cygwin…这些都是黑客攻击,而不是解决方案。)
    /cygdrive/c/dir1/dir2/ExternalLibrary.h
    有效吗?发现@pmg我确实尝试过将include目录设置为“/cygdrive/c/dir1/dir2”(我还尝试了其他斜杠)从“c:\dir1\dir2”开始。进行更改后,编译器没有看到.h文件。因此,我从编译器那里得到了一堆错误,不知道.h文件在哪里,也不知道“未定义”符号。看起来你走对了路,至少你发现了问题。对不起,我帮不上更多的忙:我不使用Eclipse或Cygwin。不知道GNU为什么会这样做。在我看来,“如果它没有坏,就不要修理它”。了解GNU/FSF对Windows的立场。。。也许他们是在消极攻击?