2013-01-25 19 views
0

我目前正在使用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: 

我試圖清理和重建,不使用運行功能,並且應用程序構建乾淨。我也在沒有Eclipse的情況下運行實際的.exe文件,並且應用程序按預期運行。儘管獨立於Eclipse運行應用程序是一種可以接受的替代方法,但我將在不久的將來用C++編寫幾個應用程序,並希望能夠從Eclipse執行。這些應用程序也將使用Eclipse進行檢查和分級,我相信我的導師也會喜歡這種便利。

我看過this question,建議更改C:/爲相對路徑名或/ cygwin/c /。我的其他.d文件以及我的包含路徑使用相對路徑,這些文件不構成問題。雖然我相信這兩種解決方案都可以工作,但每次編譯都會重新創建.d文件。我所做的所有更改在每次構建時都被覆蓋。

Eclipse和/或Cygwin C++是否包含可能允許我防止將來發生這種併發症的任何設置?

+0

這個問題其實是關於'Make'(或者Eclipse),而不是編譯器,所以我已經重新命名並重新授權,讓它更好地接觸那些具有正確知識的人。 –

+0

謝謝,Dietrich。 – floppsb

+1

問題恰恰在於'C:/'應該是'/ cygdrive/c /'。將結腸解釋爲定義目標模式;當一行中有多個冒號時,會出現「多個目標模式」錯誤。你可能必須編寫一個封裝腳本,用於輸出'.d'文件或作爲構建系統一部分的後處理步驟,它會自動搜索並替換'C:/'到'/ cygdrive/C /'。 – andrewdotn

回答

3

我已經想通了,我可以在Eclipse中運行項目,只有在每次運行之前手動清理它。另外,如果我在每次構建之前手動清理它,構建就會成功。在我提交此作業後,我將着手創建一個用於編譯的自定義腳本。

+0

那麼,任何成功? – einpoklum

+0

我相信我必須從外部到內部重置生成器,或者反過來。我不確定實際情況如何變化 - 可能是我在計算機之間移動項目時。 – floppsb

1

使用外部的'Gnu Make'構建器時,您還可以刪除'多個目標模式'錯誤。我使用Eclipse開普勒與CDT 8.3.0,並且做了以下內容:

  1. 在include路徑都在 項目屬性建立CONFIGS,即| C/C++構建|設置| 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) 。

我意識到上述是特定於特定的工具鏈設置,但至少它提供了一個可能的替代方法來讓託管的Make項目正常工作。

這是我在計算器上的第一篇文章,順便說一句,如果我做任何禮儀的失誤,他們是無意的:)

相關問題