Version control Mercurial、依赖项、存储库结构

Version control Mercurial、依赖项、存储库结构,version-control,mercurial,cmake,Version Control,Mercurial,Cmake,我正在从事一些跨平台的项目,并使用CMake配置具有不同构建系统的项目。这种方法的缺点是需要在每个平台上构建依赖项和子项目。我将经典的主干分支标记结构(当时我在subversion上)修改为: trunk/ data/ test/ sources/ ... branches/ branch-A/ branch-B/ ... tags/ tag-1.0/ tag-1.1/ ... workspace/ msvs_2008/ 3rdParty/ -

我正在从事一些跨平台的项目,并使用CMake配置具有不同构建系统的项目。这种方法的缺点是需要在每个平台上构建依赖项和子项目。我将经典的主干分支标记结构(当时我在subversion上)修改为:

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
因此,开发人员可以简单地签出必要的开发分支并进行开箱即用的构建。他还可以签出trunk,如果他有预构建的库和必要的依赖项,CMake会找到它


有没有人与这个问题作过斗争?解决mercurial问题的更好方法是什么(我不确定为不同的构建系统使用分支和主干子存储库是mercurial的好解决方案,也不确定为每个构建系统包含预构建库是正确的)

,它们是这种设置的解决方案。

我必须为每种配置创建不同的存储库吗?将主干标记为分支的子存储库是否正确?