我正在使用git而我正在为一个嵌入式项目的库工作。该库也可供其他项目使用,因此我决定创建一个新项目,并通过git的子模块功能将lib链接到我的主项目。 到目前为止没问题。
但是,由于这是一个嵌入式项目,我必须添加其他代码,如硬件初始化和系统计时器。但是,这些东西不应该在库的项目中,因为它不是运行lib所必需的,只是用于开发它。让我们称这个东西为开发工具。
所以,这意味着我的实际lib文件夹是一个git项目INSIDE一个更大的项目,即开发工具。 看起来像:
/ development harness root
|-- .git
|-- makefile
|-- main.c
|-- additional_stuff.c
|-- lib folder (can be used from someone else as submodule)
|-- .git
|-- lib.c
|-- lib.h
所以,"内部项目"可以通过子模块功能由其他外部项目使用。 外部项目(开发工具)将帮助我开发我的lib,构建它并在硬件上运行它。
但是,我的问题是:如何创建这样的结构? 如何告诉外部项目有一个内部项目,不应该跟踪其单个文件? 我只是尝试了#git init"在我的lib文件夹中,这确实会创建一个内部项目,但外部项目也会跟踪这些文件。 我猜,.gitignore在这个地方错了。
我也无法将内部项目创建为子模块,因为此项目目前不在任何地方。但是" git submodule add"确实需要存储库/现有项目的路径。
我能想到的一个解决方案是这样的:
/ development harness root
|-- .git
|-- makefile
|-- main.c
|-- additional_stuff.c
|-- lib folder (via submodule feature)
|-- (all stuff here is pulled from lib root)
/ lib root
|-- .git
|-- lib.c
|-- lib.h
我想这可行。 但是,对我而言,这感觉是错误的。这将给我另一个顶级项目"。如果我为有时可能重复使用的所有东西做这个,我会有很多项目...... 此外,对我来说,这甚至不是一个真正的项目,因为它不是构建和可运行的。
那么,有没有办法实现像我的第一个例子中的结构?
答案 0 :(得分:0)
如何为您的库创建一个完全独立的仓库,并将其用作主项目中的库?
这样,在您的lib repo中,您可以拥有
.so
,即无需操作代码)在您的主仓库中,您只需要在构建文件中引用此库。
如果您计划经常同时更改库和主项目,那么它可能不如使用子模块那么实用。但是如果你有一个干净地解耦的代码,它应该是,imo,是你的方式。