2011-03-21 214 views
2

我正在開發一些跨平臺項目並使用CMake來配置具有不同構建系統的項目。這種方法的缺點是需要在每個平臺上建立依賴關係和子項目。我修改了經典的主幹分支標籤結構(我是在顛覆當時)以下:Mercurial,依賴關係,存儲庫結構

trunk/ 
    data/ 
    test/ 
    sources/ 
    ... 
branches/ 
    branch-A/ 
    branch-B/ 
    ... 
tags/ 
    tag-1.0/ 
    tag-1.1/ 
    ... 
workspace/ 
    msvs_2008/ 
    3rdParty/ - (contains precompiled libs, e.g boost) 
    external-lib-1/ - (external library-1 source) 
    external-lib-2/ - (external library-2 source) 
    project/ - (external to the trunk) 
    CMakeLists.txt - (configures this stuff together) 
    generic/ - (for linux, 3rdParty libraries installed using package manager) 
    external-lib-1/ 
    external-lib-2/ 
    project/ 
    CMakeLists.txt 
    msvs_2010/ - (experimental) 
    3rdParty/ 
    external-lib-1/ 
    external-lib-2/ 
    project/ 
    CMakeLists.txt 

所以開發者可以簡單地簽了必要的開發分支,打造出的方塊。他還可以檢查後備箱,如果他有預建圖書館和必要的依賴關係,CMake會找到它。

有沒有人與這個問題掙扎?解決mercurial問題的更好方法是什麼?(我不確定使用分支機構與不同的構建系統和trunk subrepository是否是mercurial的好解決方案,並且不確定包括每個構建系統的預構建庫是否正確)?

回答

1

調查Mercurial Subrepos,他們是這種設置的解決方案。

+0

我是否需要爲每個配置製作不同的存儲庫?將trunk標記爲分支的子庫是否正確? – DikobrAz 2011-03-21 13:46:35