【发布时间】:2013-01-08 23:04:06
【问题描述】:
我目前正在使用 Eclipse Juno、CDT 和 Cygwin C++ 开发一个介绍性 C++ 项目。我正在使用 MVC 架构,并且刚刚获得了可以运行可执行文件并查看一些结果的代码。当我构建应用程序时,编译器不会抛出任何错误;但是,当我通过 Eclipse 运行应用程序时,应用程序会重新构建并显示以下错误:
make: *** multiple target patterns. Stop. GasFinderTUI.d KyleGasStationFinder/Debug/src/View line 1 C/C++ Problem
这是我在该文件中的代码:
src/Controller/GasFinderController.d src/Controller/GasFinderController.o: \
../src/Controller/GasFinderController.cpp \
../src/Controller/GasFinderController.h \
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/LocalGasStations.h \
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasStation.h \
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasPump.h \
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/Utilities.h
../src/Controller/GasFinderController.h:
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/LocalGasStations.h:
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasStation.h:
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/GasPump.h:
C:/Users/Kyle/Dropbox/Workbench/KyleGasStationFinder/src/Model/Utilities.h:
我已经尝试清理和重建,但没有使用 run 功能,并且应用程序构建得很干净。我还在没有 Eclipse 的情况下运行了实际的 .exe 文件,并且应用程序按预期运行。尽管与 Eclipse 分开运行应用程序是一种可接受的替代方案,但我将在不久的将来用 C++ 编写几个应用程序,并希望能够从 Eclipse 中执行。这些应用程序也将使用 Eclipse 进行检查和评分,我相信我的导师也会喜欢这种便利。
我查看了this question,它建议将 C:/ 更改为相对路径名或 /cygwin/c/。我的其他 .d 文件以及我的包含路径使用相对路径,这些文件没有问题。尽管我相信这两种解决方案都可以工作,但每次编译都会重新创建 .d 文件。我所做的所有更改都已在每次构建时被覆盖。
Eclipse 和/或 Cygwin C++ 是否包含任何可能允许我防止这种并发症在未来发生的设置?
【问题讨论】:
-
这个问题实际上是关于
Make(或Eclipse)而不是编译器,所以我重新命名了它并重新标记了它,以便让有正确知识的人更好地了解它。 -
问题正是
C:/应该是/cygdrive/c/。 Make 将冒号解释为定义目标模式;当一行中有多个冒号时,会出现multiple target patterns错误。您可能必须为.d文件的任何输出编写一个包装脚本,或者作为构建系统的一部分的后处理步骤,执行自动搜索和替换,将C:/转换为/cygdrive/c/。跨度>
标签: makefile cygwin eclipse-cdt