2012-04-17 49 views
0

我有一個很大的C++項目,我需要在構建階段做很多步驟,因爲我正在構建一個兼容64和32的應用程序,我有三個項目: proj1,Porj2, Proj3在VS2010中自定義構建VC++

,我需要做到以下幾點:

  1. 從proj1排除一段cpp的文件(32位版本)

  2. 包含一個CPP文件proj1(64位版本)

  3. 構建proj1

  4. 構建proj2

  5. 執行proj2

  6. 的輸出排除從proj3一段cpp的文件(32位版本)

  7. 包含一個CPP文件proj3(64位版本)

  8. Build proj3

  9. 重命名從proj3

  10. 內置的exe排除從proj1一段cpp的文件(64位版本)

  11. 包含一個CPP文件proj1(32位版本)

仍然存在是一些其他的步驟...我手動和令人沮喪的,我發現我需要使用MSBUILD,但它是用於構建本機代碼?我該如何執行這些任務?

-Excluding和包括cpp文件到項目中

- 建材凸出

+0

是的,本機代碼也使用MSBuild。我無法理解你的問題的其餘部分。 – 2012-04-17 18:08:58

+0

@CodyGray我怎樣才能包括和排除使用MSBUILD cpp文件,並選擇建立不同的平臺,因爲我的一些cpp文件是32和其他爲64兼容性問題 – CnativeFreak 2012-04-17 18:11:00

回答

2

在Visual Studio 2010及更高版本,C++項目中使用的MSBuild。


不是排除或包括基於配置文件相反,它會更簡單使用預處理指令有條件的編譯文件的內容。例如,將文件的全部內容包裝在:

#ifdef MY_32BIT_BUILD_MACRO 
// Source file contents here 
#endif 

而且還有一個用於64位構建的宏。使用Visual C++時,可以使用_M_IX86_M_X64預定義的宏來檢測您是分別針對x86還是x64進行編譯。

或者,您可以將Condition屬性添加到項目文件中特定源文件的ClCompile項目,並且只有在設置了某些屬性時纔將其包含在構建中。儘管如此,我認爲源文件中的條件編譯是一個更好的選擇,除非您有複雜的規則需要用來確定是否包含文件。


在您的解決方案,您可以設置項目的依賴,以確保一個項目之前,另建。右鍵單擊解決方案,選擇「屬性」,然後瀏覽到「通用屬性」 - >「項目依賴項」。依賴項也可以在項目文件中指定。

您可以通過使用後構建任務來執行構建的輸出。右鍵單擊該項目,選擇屬性,然後瀏覽到配置屬性 - >生成事件。構建完成後,可以使用構建後事件來執行命令。


與構建後重命名可執行文件相比,使構建產生具有正確名稱的可執行文件更簡單。在「項目」屬性的「配置屬性」 - >「常規」下,可以使用「目標名稱」屬性設置主要生成輸出的名稱。

+0

我怎樣才能使它建立64版本,然後建立32自動版本?沒有我改變平臺?沒有我改變平臺的 – CnativeFreak 2012-04-17 18:18:34

+0

? – CnativeFreak 2012-04-17 18:21:27

+0

感謝您的評論,您讓我的生活更輕鬆。現在我只需要改變平臺並編譯,你幾乎總結了12步到2步..很感謝! – CnativeFreak 2012-04-17 18:26:23