我正在尝试编译一个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:
答案 0 :(得分:3)
引用现有答案,因为您可能遇到同样的问题
“我在使用Cygwin之前已经看到过这个问题 - 基本上,make在路径中看到:并且认为它是另一个目标定义,因此错误。
如果您正在使用Cygwin安装,可以尝试将c:/替换为/ cygdrive / c /。如果没有,您可以尝试使用相对路径或使用网络安装,看看是否修复它“。
答案 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。