更新1: 我原来的帖子太长了,模糊了真正的问题。当调用Make时,我已经确切地发现了导致“多个目标”错误的原因。
更新2: 我发现这个“多目标”错误是由GNU Make版本3.8.1引起的(请参阅here1和here2)。 GNU Make 3.8.1是与Cygwin一起发布的当前GNU Make。总结链接:旧的v3.8.0处理窗口路径很好,而较新的v3.8.1报告了Windows路径的错误(也许它是来自FSF的被动攻击性攻击?)。
当您在Eclipse + CDT + Cygwin中启动一个没有外部包含/库的新项目时,一切都适合我。
一旦我尝试使用外部包含/库,我就会收到“多个目标”错误。
以下是在Windows + Eclipse + CDT + Cygwin上重现错误所需的步骤:
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
获取错误“多个目标”的原因是因为它看到“:”,它是声明目标的Make语法的一部分。如果有两个“:”,则输出错误,因为它不知道如何处理“多个目标”。
我无法手动编辑makefile,因为它们会立即重新生成并被覆盖[UPDATE:by Eclipse-CDT]。鉴于我无法手动编辑makefile。
*非常非常沮丧*
努力保持开源和跨平台用户
特雷弗
答案 0 :(得分:3)
原来“多目标”问题是由Cygwin安装的当前版本的GNU Make引起的。 GNU Make 3.8.1是与Cygwin一起发布的当前GNU Make。
GNU Make 3.8.1不处理包含“C:\”的Windows路径。因此,每次make文件的窗口路径为“C:\”时,都会出现构建错误“多个目标”。
我最终做的解决方案是下载一个固定的GNU Make v3.8.1。请参阅Here1或Here2。然后Eclipse + CDT + Cygwin再次正常工作。
更新(05-feb-2015): 使用更新的cygwin和新的Make(4.0.x),问题就会消失。 https://superuser.com/questions/154418/where-do-i-get-make-for-cygwin
答案 1 :(得分:0)
也有这样的问题。问题是我在项目设置中包含了路径。然后我有绝对的路径。在包含相对路径的文件夹设置中包含路径时,它可以正常工作。
答案 2 :(得分:0)
更新cygwin后,我仍然遇到与eclipse / CDT Juno相同的问题
你需要制作3.80-1或更高版本,这需要cygintl-2.dll。 从。下载make3.80-1
http://www.filewatcher.com/m/make-3.80-1.tar.bz2.286814-0.html
和所需的Dll来自
http://www.dllguru.com/cygintl-2.dll.html 在某处提取它
将你的make在cygwin / bin中重命名为makeVersion,例如make3.82.90
复制cygintl-2.dll并制作成cygwin / bin
尝试在eclipse中构建你的项目两次,问题应该消失了
gerdi