多个目标模式?

时间:2012-05-16 08:32:38

标签: c cygwin

我正在尝试编译一个c文件,其中包含了Mongo数据库的驱动程序。我可以从Cygwin成功编译它,但是当我转向Netbeans时,我得到了这个。我应该提一下,只有在C编译器的附加选项中添加“-std = c99”后才会发生这种情况。

更新:
从Netbeans成功编译。但是“-std = c99”让我很生气。如果我有它说(每次编译后如果我不删除obj文件):

build/Debug/Cygwin_4.x-Windows/main.o.d:1: *** multiple target patterns.  Stop.  

更新:
main.o.d的内容是:

build/Debug/Cygwin_4.x-Windows/main.o: main.c \
 c:/mongodb-driver/src/mongo.h c:/mongodb-driver/src/bson.h \
 c:/mongodb-driver/src/platform.h

c:/mongodb-driver/src/mongo.h:

c:/mongodb-driver/src/bson.h:

c:/mongodb-driver/src/platform.h:

2 个答案:

答案 0 :(得分:3)

引用现有答案,因为您可能遇到同样的问题

“我在使用Cygwin之前已经看到过这个问题 - 基本上,make在路径中看到:并且认为它是另一个目标定义,因此错误。

如果您正在使用Cygwin安装,可以尝试将c:/替换为/ cygdrive / c /。如果没有,您可以尝试使用相对路径或使用网络安装,看看是否修复它“。

application fails with multiple targets from eclipse

答案 1 :(得分:2)

来自你的评论:

  

@Lumi如何安装它而不必每次都编辑它?

修复生成main.o.d(可能还有很多其他.d个文件)的脚本,以编写Cygwin make理解的相对路径或绝对路径。

或者,考虑使用MinGW代替Cygwin是否适合您。 (但我觉得你在走这条路时会遇到更多问题。)

最终,为了应对Makefiles,您需要了解Make的工作原理。 GNU Make has a comprehensive manual.我发现these tips非常有用。在这个阶段,对你来说最好的可能是Scott Duckworth's Make tutorial