使用C和Git处理公共头文件的正确方法

时间:2013-10-19 02:40:40

标签: c git

所以我有这样的文件夹

c:\projects\generic\
c:\projects\project1\
c:\projects\project2\

项目下的每个文件夹都是各自独立的本地git存储库。项目可以使用通用文件夹中的一个或多个头文件。如果项目使用头文件,则需要在项目文件夹中,而不是项目文件夹下的子文件夹。另外,我可能不想要最新和最好的,我想通过标签来拉它,所以我可以确定我有一个特定版本的文件用于该项目。

我该怎么做?这是可以用子模块完成的吗?在这种情况下,有更好的方法来组织文件夹吗?

1 个答案:

答案 0 :(得分:0)

  

我想要[...]该项目正在使用的特定版本文件。

Yup:子模块就是这样的。子模块是一个嵌套的存储库,使用项目的提交记录(仅)确切地在子模块的路径中检查了哪些(其他)提交的SHA,git submodule只是检查了获取正确的子模块提交的琐事。你想要的。

  

如果项目使用[来自另一个存储库]的头文件,它需要在项目文件夹中,而不是项目文件夹下的子文件夹[...我在Windows上]。

幸运的是这些是标题,否则这个组合会出现问题。实际上,编译器可以使用#include "relative/path/to/submodule/header.h"追踪相对路径名:

repo
|--generic.h:  "#include generic1/generic.h"
|--generic1
   |--generic.h:  the real thing