我正在尝试创建一个构建系统,但我应该使用的结构不清楚。 我有各种库文件及其相关的包含。 这些库文件(或模块)可能具有各种版本。因此,module1可能只有1个版本,但ModuleN可能有50个版本。 现在我的问题是我不知道如何组织我的树,以便我可以为给定的版本构建我的Library.a包。
我的第一个问题是以下列方式组织我的文件:
Libraries Includes
¦ ¦
---------------------- ----------------------
¦ ¦ ¦ ¦ ¦ ¦
V1.0 V1.1 V1.2 V1.0 V1.1 V1.2
¦ ¦ ¦ ¦ ¦ ¦
Lib1.c Lib3.c Lib2.c Lib1.h Lib3.h Lib2.h
Lib2.c Lib3.c Lib2.h Lib3.h
Lib3.c Lib3.h
Lib4.c Lib4.h
现在,我将如何构建我的包V1.2,考虑到它还需要在整个树中合并最新库的联合(即.V1.2包= V1.0 U V1.1 U V1.2 )。在这种情况下,手动定义规则并不困难,但是它会很快变得无法管理100个文件。
在通常的做法中,可能会将未更改的文件从版本复制到下一个版本,但很难知道它在哪里。
这个问题是否有典型方法?
答案 0 :(得分:0)
我知道OP说他不想使用Git,所以这个答案更适合其他读这个问题的人。
从存储库构建任意版本的一种常见做法是使用标记。标记是一种突出显示特定提交的方法。 Git支持两种类型的标记:轻量级和注释。
轻量级标签就像一个分支。它只是一个提交指针。与分支的区别在于此指针不会随新提交而改变。建议不要将这些标签用于您的目的。它们在开发过程中更适合开发人员。要创建轻量级标记,请使用此命令
git tag <name>
其他标记类型是带注释的标记。它们包含更多信息并经过校验和。这些是您要用于发布的。与提交一样,您可以为带注释的标记指定标记消息。要创建带注释的标记,请使用以下命令:
git tag -a <name>
这将打开一个编辑标签消息的编辑器。您也可以使用-m "<message>"
要查看所有代码,只需使用:
git tag
您可以像结帐分支一样结帐标签:
git checkout <tag>
在此处详细了解标记:https://git-scm.com/book/en/v2/Git-Basics-Tagging
因此,您所做的是为每个与发布对应的提交创建一个(最好是带注释的)标记。然后,假设您可以通过调用make
来构建项目,您可以使用这两个命令构建任何版本:
git checkout <tag>
make
注意:在上面的评论中,我在谈论分支机构。那是我的暂时混淆。为此目的可以使用分支,但标记是正确的方法。