制作:***多个目标模式。停止

时间:2013-01-25 01:51:13

标签: makefile cygwin eclipse-cdt

我目前正在使用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 ++是否包含可能允许我阻止此复杂事件发生的任何设置?

2 个答案:

答案 0 :(得分:3)

我已经发现我可以在Eclipse中运行项目,只有在每次运行之前我手动清理它。此外,如果我在每次构建之前手动清理它,那么构建是成功的。在提交此作业后,我将研究为编译创建自定义脚本。

答案 1 :(得分:1)

使用外部“Gnu Make”构建器时,您还可以删除“多个目标模式”错误。我正在使用带有CDT 8.3.0的Eclipse Kepler,并执行以下操作:

  1. 在包含所有构建配置的路径中,即在   项目属性| C / C ++ Build |设置| Cygwin C [或C ++]编译器|包括
  2. 将每个必需的包含路径的2个版本,Cygwin样式后跟Windows样式,例如
        / cygdrive / d / cygwin64在/ usr /共享/不管/包括
        d:/ cygwin64的/ usr /共享/不管/包括
  3. 这会导致每个构建配置的源目录中的依赖项文件(* .d)使用   依赖项中的Cygwin样式路径,它会删除上面的错误,因为它是   冒号':'这些文件中的字符导致它,正如@andrewdotn所说。
  4. 这也允许CDT在C / C ++源文件中查找包含文件,因为它通常在搜索Windows样式的包含路径时找到它们(注意:我使用Cygwin作为我的构建工具链,而不是MinGW)
  5. 我意识到上述内容特定于特定的工具链设置,但至少它提供了一种可能的替代方法来使托管的Make项目正常工作。

    顺便说一句,这是我在StackOverflow上的第一篇文章,所以如果我犯了任何礼仪错误,那么这些都是无心的:)