更新1: 我的原始帖子太长了,掩盖了真正的问题。我已经发现了当调用Make时引起“多目标”错误的确切原因。
更新2: 我发现这个“多目标”错误是由GNU Make 3.8.1版本引起的(参见此处1和此处2)。GNU Make 3.8.1是当前与Cygwin一起发布的GNU Make。总结链接:旧版v3.8.0可以正确处理Windows路径,而新版v3.8.1对Windows路径报告错误(也许这是自由软件基金会的一种被动攻击?)。
当您在Eclipse+CDT+Cygwin中启动一个没有外部包含文件/库的新项目时,一切都很好。
一旦我尝试使用外部包含文件/库,我就会遇到“多目标”错误。
以下是在Windows+Eclipse+CDT+Cygwin上复制错误的确切步骤:
- 项目属性--> C/C++构建-->设置-->工具设置-->Cygwin C编译器-->包含-->包含路径(-I)-- >添加按钮-->选取目录-->“C:\dir1\dir2”
- 我点击构建。
- 第一次构建时没有错误。
- 我再次点击构建...我收到构建错误“多目标。停止。”。
- 我点击错误。
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错误的原因是因为它看到了“:”,而这是Make语法用于声明一个目标的一部分。当有两个“:”时,Make会出现错误,因为它不知道如何处理“多个目标”。
我无法手动编辑makefile,因为它们会立即重新生成并覆盖[更新:由Eclipse-CDT生成]。鉴于我无法手动编辑makefile。
- 有没有办法让Eclipse不使用“C:\”路径?或者告诉make忽略“C:\”路径?
- 这是Eclipse+CDT+Cygwin的错误吗?
- 如果您使用Eclipse+CDT+Cygwin……请帮个忙(我不想使用Visual Studios……)!也许我在使用Eclipse+CDT+cygwin时出错了?您如何使外部库包含功能正常工作?
*非常非常沮丧*
试图保持开源和跨平台用户,
Trevor
/cygdrive/c/dir1/dir2/ExternalLibrary.h
能用吗?在这里找到了答案:[http://cs.nyu.edu/~yap/prog/cygwin/FAQs.html#windows] - pmg