2009-12-22 55 views
0

我正在構建一個跨平臺的產品,並且其中一個需求是跨Windows(win32,AMD64和IA61)。該產品雖然相對簡單,但我們有一個獨立的構建團隊,他們從CVS中檢出代碼並在獨立的構建環境中構建。我可以在一個平臺(AMD機器)中成功構建(使用Visual C++ 2005)。但是一旦我檢入代碼,檢查構建失敗。在CVS簽入和簽出後構建Visual C++項目問題

構建失敗的原因是因爲包含庫路徑在屬性表中被錯誤地指定。特別是鏈接器屬性頁下的輸出文件文件夾被錯誤地指定。所以這些庫被構建在與其他項目期望的地方不同的文件夾中。

但是,隨着源代碼,我每次都檢查.sln文件(以及後來的.vcproj文件)。 Morover如果我在構建不成功的文件夾中打開.sln文件,那麼我可以成功構建的那個(預檢)之間沒有區別。事實上,使用windiff我看不出兩個構建文件夾(除了一些.ncb和cvs日誌文件)之間的任何區別。

因此,任何想法是怎麼回事?在VC++ 2005中,include目錄從哪裏獲取輸出文件夾路徑(如果不是.sln)? CVS是否干擾了這個過程?還有什麼我可以嘗試。

在此先感謝。

+0

是的。我也檢出了.vcproj文件。正如我提到的Windiff顯示文件夾之間沒有區別。 – user88595 2009-12-22 08:23:44

+0

爲了澄清我的基本查詢,VC++是否只在.sln文件中存儲解決方案的屬性表數據?或者還有其他需要的文件嗎? – user88595 2009-12-23 05:05:53

+0

更新 - 如果我將文件夾複製到另一個地方,構建工作正常。我幾乎相信,這與CVS簽入/簽出有關。 – user88595 2009-12-23 05:58:42

回答

1

只是爲了更新問題已得到解決。根本原因是.vcproj文件沒有在CVS中檢查!這是個人項目設置的存儲位置(我的印象是,這是在.sln文件中完成的)。

0

我認爲這個問題可能是因爲您更改了一個構建配置(例如x86-Release)中的設置但忘記更改它們以用於其他配置(例如ia64-Debug),並且配置更改時,您有這個問題。

我會檢查你的位置的另一件事是項目依賴項。如果以正確的方式設置,即使您更改輸出文件夾,VS也會精確地在輸出項目的位置查找項目輸出。

+0

關於#1,當前發生的問題在同一配置(發行版| x64)內發生。我檢查x64並檢出並僅重建x64。 #2項目依賴關係對於所有項目都是相同的。 – user88595 2009-12-22 08:32:32

0

你是否有任何二進制文件檢入ASCII?

往返於CVS的往返程序可能會破壞錯誤標記爲ASCII的二進制文件,因爲CVS對ASCII文件執行字符處理(例如,爲您的OS提供正確的行代碼結束)。即使在所有的Windows環境中都可能發生腐敗。

有關更多信息,請參閱CVS FAQ中的二進制部分。

+0

我不這麼認爲。在任何情況下,構建失敗的原因是因爲依賴庫正在建立在與主程序中指定的文件夾不同的文件夾中。 – user88595 2009-12-22 10:02:38