2009-11-02 33 views
1

我來自Java背景,我目前工作的商店拒絕使用MS VC++以外的任何東西來構建其傳統項目。他們似乎沒有使用任何標準來設置他們的構建環境,而只是使用VS2005構建它並單擊編譯按鈕。MS Visual C++環境如何設置?

我想知道,如果有什麼更接近到什麼Java的有,例如:

  • 構建工具像螞蟻或Maven
  • 的目錄結構,使含
    • SRC感 - 廣場對於我所有的源文件.c/.cpp/.h
    • lib - 可能在項目中使用的任何庫的地方(.dll,.lib)
    • d ist - 項目輸出可執行文件/分發版的地方
    • 資源 - 可能包含在項目中的任何圖像/聲音/文本文件的位置。
    • 的build.xml - 某種構建文件(我的猜測是類似的./configure或Makefile的)

還是我要求得太多了從C++的編譯環境?它是否總是像我商店裏的人所認爲的那樣混亂?我真的很難相信考慮到互聯網上這麼多C++項目的成功。

回答

2

這聽起來像你有良好的意圖 - 來形成一個非MSVC世界,我可以看到你的觀點。

如果我是我們的鞋子,我肯定會製作一個命令行/自動構建/構建服務器。

你可以使用MSBuild做到這一點 - 而哈德森有一個插件。我通常在包含腳本/ etc的項目的根目錄附近有一個「Build」目錄,它們將調用相應的MSBuild/.sln文件。

Visual Studio的「makefile」是.sln和.vcproj文件。你可以通過命令行調用msbuild。你也可以從你可以運行的IDE中導出一個makefile(我認爲這仍然是一個選項)。我不推薦去試試看,看看輸出是什麼,因爲這是你所熟悉的。

vcproj和sln文件都是人類可讀的 - 通過它們 - 它會給你一些有用的信息。

我也會同意有一個distributon目錄是好的 - 用於在構建之後構建安裝程序/ etc。複製所有需要的二進制文件 - 無論是在構建後步驟還是在其他腳本/等。

讓我們知道你最終做了什麼。

我有另外一個忠告: 升級到VC /開發工作室2008年或2010年的ASAP

+1

@tim酷我不知道那些.vcproj和.sln文件是人類可讀的! :)我可能對MS有一些舊的(也許是毫無根據的)偏見。我知道他們近年來已經採取措施改善。 – leeand00 2009-11-02 19:52:29

0

標準化的東西:

  • 構建工具:Visual Studio的(並不需要一個額外的產品)
  • 構建文件:*.sln/*.vcproj*.vbproj爲Visual Basic等)
  • 目錄結構:輸出二進制文件的「Debug」和「Release」目錄。

其餘的並不像「無所謂」那麼「混亂」。 「混亂」意味着它一直在變化,但實際上你只是選擇一個項目並堅持下去。公司可能跨項目制定內部標準。對於跨公司的標準化來說,這並不重要。無論如何,C++是一門複雜的語言;具有足夠智商來閱讀C++的人可以處理合理的變化。 \lib\\Library\之間的區別不會阻止它們。

+0

是不是Linux的C++目錄結構稍微比這更有條理? – leeand00 2009-11-02 14:39:06

+0

另外,您如何知道項目編制的順序? – leeand00 2009-11-02 14:41:20

+0

這是唯一的約定,使任何結構看起來有組織或不。在g ++下,如果你付出努力,你可以把任何東西放在你想要的地方。與Visual Studio一樣。 如果你問在Visual Studio中編譯的順序是什麼,爲什麼它有什麼區別?無論如何,你可以指定結構。閱讀文檔。 – jfawcett 2009-11-02 15:06:43

1

MSVC不會對您施加任何目錄結構。有一些默認設置,例如上面提到的調試和發佈目錄,但是即使這些默認設置可以在每個項目的基礎上被覆蓋。使用任何目錄結構對您有意義。

如果不想使用IDE,Visual Studio會提供命令行支持。有關更多信息,請參閱This MSDN Article

1

您可以使用Visual Studio設置適當的構建環境(並且對於具有多個項目的解決方案,您應該),並且在項目配置中使用許多環境變量來設置輸出文件和中間值文件將轉到不同於默認定義的文件夾。

在我們的大型VS解決方案中,我們使用obj/$(ProjectName)/$(ConfigurationName)作爲中間目錄,bin/$(ConfigurationName)作爲所有子項目中的輸出目錄。

所有這些事情都必須由用戶執行,似乎沒有任何單一的推薦/最佳做法已經演變。