2009-09-15 118 views
1

我想設置我的Windows CE應用程序的自動生成。然而, 我們在同一時間,我們的應用不斷髮展我們的平臺(添加 擴展卡,新服務等)。我希望能夠聯想到我的 的應用程序建立一個版本的SDK,要麼有 的SDK安裝(不太可取選項)多個版本或與我 應用versionned的SDK(最可取的選擇)。我希望能夠運行並行版本 ,所以SDK應該在本地項目中,而不是在項目之間共享。自動化構建

目前我已經能夠做的就是安裝SDK和移動頭 和庫到我的項目然後添加相對路徑我的項目包括 和庫。我的問題是:有不止的東西,都安裝在SDK頭文件和庫 所以我可能會遇到麻煩,如果我建立一個 應用程序與舊的頭文件和庫並安裝了新的SDK(或更新版本 頭文件和庫比安裝SDK)?

另一種方法是將Visual Studio /命令行工具重定向到我自己的 header/libs和Properties.xml(但我還沒有想到如何做到這一點)。

有沒有人這樣做過?

感謝,

亞歷克西斯

+0

如果這不是Platfom-Builder問題,請刪除標記。請澄清以下內容:您想使用特定SDK中的頭文件和庫,然後讓所有未來的版本不依賴於此SDK? – Shaihi 2009-09-21 06:07:53

+0

對不起,Platfom-Builder標記已刪除。 我希望我的版本完全獨立於SDK安裝程序。我希望所有SDK安裝程序信息都包含在我的項目中。因此,無論SDK做什麼(安裝頭文件和庫文件以及其他任何操作),我都希望它包含在我的項目中,這樣我的自動構建就不依賴於安裝程序。但是,我不確定SDK的全部功能,我想確保包含新的SDK頭文件和庫文件足以使我的項目獨立於SDK安裝程序。 – Alexis 2009-09-30 16:35:54

回答

1

這實際上是一個相當廣泛的問題,涵蓋了一些領域。首先讓我們看看SDK實際是什麼以及它包含什麼。

當您創建平臺時,您將包含目錄項目。這些項目中的每一個都有一組關聯的頭文件和lib文件。當您滾動SDK時,滾輪會爲每個目錄組件(基於每個處理器)(因爲SDK可支持多個處理器)合併所有這些標題和庫。它還添加了您在平臺BSP中定義的任何「額外」文件(例如仿真器BSP將包含仿真器映像),並且還包含在SDK定義中專門定義的任何額外文件。

那麼SDK的內容何時更改?那麼,無論何時您對平臺中包含的目錄項進行更改,或者您明確選擇添加或刪除SDK中定義的額外文件。

對於自動化,它非常簡單。我們傾向於做的事情(並且它與多家公司一起工作了多年)是定義一個非常非常廣泛的一組催化劑組分。基本上扔進目錄中的廚房水槽。

不要添加任何自定義文件(所以如果你有自定義頭文件的驅動程序或其他,不要包括在SDK中)。而是手動將這些文件發佈到通用文件夾。將此常用文件夾添加到應用程序「附加包含文件路徑」。

現在您可以隨意修改平臺而不會影響應用程序。唯一的潛在問題是,由於許可或大小的限制,您可能會使用一個標題或lib,實際上您最終會從平臺上刪除它。

將所有這些自動化實際上是一個完全獨立的問題,而且它似乎並不像你實際上在問如何執行構建自動化。

+0

感謝您的回覆。它絕對看起來像一個潛在的解決方案總的來說,我試圖避免在構建服務器上安裝任何類型的SDK(不安裝Visual Studio和Platform Builder將會是最好的,並且也會在配置控制下進行安裝),但似乎SDK定義了可以'跟蹤來滿足我在沒有安裝SDK的情況下使用特定SDK構建的構建環境。但是你的解決方案是通用的,並且可以在多個項目中工作。 – Alexis 2010-12-09 15:33:25

+0

是的,我們從來沒有能夠避免必須在構建服務器上安裝Studio和「常規」SDK,但由於我們有一個SDK,所以它是一次性的,因此維護率很低。 – ctacke 2010-12-09 16:20:38

0

聽起來好像要與PB吸入從它的信息PATH環境發揮。我的意思是(根據我的理解),你希望2個版本將從2個不同的位置獲取文件,對吧?在這種情況下,您可以運行不同的批處理文件來設置適當的環境設置,然後每個批處理文件的構建都會有所不同。 以下博客對Platform Builder具有的構建工具(link)有很好的評論。
您是否希望包括宏來控制,其中PB從取頭文件,爲了每一次你將不得不作出庫的路徑可以由你會在設定的宏針對不同的庫鏈接玩批處理文件,例如:
SOURCELIBS = \
$(_ MY_PREDEFINED_PATH_TO_THE_LIBS)\ LIB \ libName.lib

然後在批處理文件將設置不同的_MY_PREDEFINED_PATH_TO_THE_LIBS

+0

感謝您的回答。 這不是一個平臺生成器相關的問題。我正在使用從Paltform Builder生成的SDK使用常規Visual Studio 2005。我的問題是關於SDK:它安裝了什麼,並且只安全地在我的項目中本地存儲/強制標題和庫,以使SDK版本獨立。 – Alexis 2009-09-18 17:08:18

0

我建議你對付它通過使用一個可行的配置(版本)管理策略:只是排除混淆版本的頭文件和庫管理器的可能性IES。即使它起作用,但肯定會有一個不受支持的移民,這可能會給你帶來一些奇怪的問題。

微軟的工具讓它變得不容易,因爲他們喜歡c:\ program files等文件.... 但是如果你能保證所有的工具都在版本控制之下,你總是可以回滾一個版本的工具。注意註冊表關聯。

如果您可以製作相同的二進制版本(即沒有嵌入的日期/內部版本號!),您可以驗證在配置管理中移動到特定版本時,可以在兩臺不同的機器上重建相同的二進制文件。這會花費很多時間,但是花費的時間不會太多,因爲當你處於一個不受控制的SDK版本衝突的環境時,它會花費很多時間!

+0

謝謝Aadrian。我們還沒有源代碼管理工具(尚未)。我正在尋找有關Microsoft工具中專用和隱藏設置的幫助,但我認爲現在我會繼續使用版本控制SDK標頭和庫。所有好的和有用的建議,但。 – Alexis 2009-11-06 18:25:41

0

我們生成SDK,但將libs/headers複製到共享的svn文件夾中。每次我們構建新的SDK時,都會更新此文件夾。我們唯一需要的SDK是將處理器平臺安裝到Visual Studio中。一旦完成,我們的應用程序使用svn:externals引入標題/庫。

這樣,我們的應用程序的舊版本仍然可以提出並編譯與他們的原始SDK。否則,我們需要手動卸載/重新安裝SDK,只要我們想與其他分支一起工作。

我曾經研究過從SDK中提取所有文件,以便它只安裝VS需要的註冊表項,但是我懶得放棄。