Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 处理外部C/C++;Github存储库中的代码库_C++_Eclipse_Git_Github_Version Control - Fatal编程技术网

C++ 处理外部C/C++;Github存储库中的代码库

C++ 处理外部C/C++;Github存储库中的代码库,c++,eclipse,git,github,version-control,C++,Eclipse,Git,Github,Version Control,短版: 对于需要外部库的项目,如何在同一Github存储库中保留与项目相关的库?源代码的子模块最好吗?或者相应的.lib、.a、.dll等文件是否应作为项目的一部分上载?或者它甚至应该存在于存储库中 这不是一个主观的问题,长篇解释更深入 较长版本: 我正在使用C++作为伊柯丽斯的IDE项目,它需要各种外部库作为依赖项。 我想在GitHub上主持这个项目,以便更容易跟踪更改理想情况下我希望这样,如果我切换计算机,我就可以克隆repo,而无需重新下载和重新编译我平台的某些依赖项。这也将允许其他人在不

短版

对于需要外部库的项目,如何在同一Github存储库中保留与项目相关的库?源代码的子模块最好吗?或者相应的
.lib
.a
.dll
等文件是否应作为项目的一部分上载?或者它甚至应该存在于存储库中

这不是一个主观的问题,长篇解释更深入

较长版本

我正在使用C++作为伊柯丽斯的IDE项目,它需要各种外部库作为依赖项。 我想在GitHub上主持这个项目,以便更容易跟踪更改理想情况下我希望这样,如果我切换计算机,我就可以克隆repo,而无需重新下载和重新编译我平台的某些依赖项。这也将允许其他人在不必获得每个库的相同版本的情况下处理它

我知道我目前使用的大多数库都作为源代码存在于GitHub上,这意味着我可以将它们作为子模块包含在我的存储库中。唯一的问题是,它可能无法提供链接所需的相应
.lib
.a
.dll
文件

我的另一个想法是将项目中的库包含在存储库中,如下所示:

assets/
|- ...
src/
|- ...
framework/
|- library1/
|  |- include/
|  |- lib/
|  |- bin/
|- library2/
|  |- include/
|  |- lib/
|  |- bin/
...
因此,这些库在Eclipse中很容易被引用,因为它只是
${ProjName}/framework/library/…
。但我觉得这不是一个好的做法,因为它会使项目变得庞大——然而这只是我的观点,可能是错误的


我的想法是否正确,将这些库作为项目本身的一部分?或者有其他方法可以简化这个过程吗?

使用git repo来维护多个项目,就像维护Android源代码一样

每个子模块都可以是一个完整的git存储库,其中二进制文件在每个项目存储库文件夹的默认文件夹中编译/链接。通过这种方式,您可以跟踪每个公共或私有子模块/子项目


至于目录结构,只要选择你喜欢的。当您将git repo集合定义为与目录结构匹配时,它就可以正常工作。

您是否建议创建一个新的存储库,该存储库仅用于保存所需的已编译库文件?还是你建议我为库创建原始源代码的子模块?如果是后者,那就是我想要避免的(如果可以的话),因为它们通常不包含为它们编译的二进制文件。如果您只持有所需的已编译库文件,则无法跟踪更改。因为他们没有保存已编译的二进制文件,所以您必须编译它。将源代码保存在git repo集合表单中不会有任何伤害。(无论如何,您都需要编译它)。如果您不关心版本(并且希望使用每个库的固定版本),您可以在其他地方编译它,并在目录结构中包含二进制文件。我想这不是你的目标……事实上,git repo是为了处理多个相关的存储库而创建的。确保所有内容都保持最新版本并不是我的首要任务(特别是如果版本更改导致不同的API,因为这会破坏兼容性)。我的主要目的是确保在切换设备或与其他人一起工作时,始终可以使用相同版本的库来最小化问题。每次重新编译源代码都会变得单调乏味(即使使用makefile)。有些库对其他未包含的库有进一步的依赖性(例如,LibPNG需要zLib),您可以将编译后的二进制文件保存在存储库中,这与是否保留源代码无关。由于保留了已编译的二进制文件,因此无需重新编译。然而,如果您认为这些二进制文件很少更改,那么就不必保留源代码。