在几个C ++项目的代码库中组织.libs

时间:2010-01-07 21:57:15

标签: c++

假设您在同一存储库中的单独存储库或顶级目录中有几个定制的C ++项目。也许10个是图形项目,如图形,数据库,数学等,2个是使用这些库的实际应用程序。

组织这两个应用程序项目以获得所需的.libs的最佳方法是什么?

  • 每个lib项目都在自己的目录中构建.lib,开发人员必须手动将这些文件复制到应用程序区域并确保获得正确的版本
  • 应用程序项目希望lib项目在特定路径中并在这些位置内查找.libs
  • 所有项目都使用common / libs目录
  • 其他东西

这主要关注C ++,但我认为它与其他语言非常相似,例如在Java项目中组织JAR。

1 个答案:

答案 0 :(得分:1)

我建议采用这种方法:

在根文件夹中组织代码。我们称之为代码。

现在将您的项目和库作为子文件夹(例如项目和库)。

正常构建库并添加一个构建后步骤,将生成的标头和.lib文件复制到一组共享文件夹中。例如,Libraries \ include和Libraries \ lib。最好使用子文件夹或命名约定(myLib.lib,myLib_d.lib)来区分不同的构建(例如调试和发布),以便任何lib引用显式地针对永远不会混淆的单个文件。当你不小心链接到一个错误的lib变种时,它会很糟糕!

您也可以将您使用的第三方库复制到这些文件夹中。

注意:为了使它们井井有条,请使用#include“Math \ Utils.h”而不是“Utils.h”包含文件。并将整个Math库的标题放入include \ Math,而不是将它们全部放在include文件夹的根目录中。这样你就可以拥有许多没有名字冲突的库。它还允许您使用不同版本的库(例如Photoshop 7,Photoshop 8),它允许您在不同的运行时环境中对您的代码进行多目标定位。

然后设置项目以两种方式之一引用库:

1)告诉您的IDE /编译器lib正在使用其全局lib / include路径。这意味着您可以在每台PC上设置一次IDE,而无需为任何项目指定库的位置。

2)或者,设置每个项目以使用自己的lib / include路径引用lib。这为您提供了更大的灵活性,并且无需设置每台PC,但意味着您必须在每个新项目中设置相同的路径。

(最好取决于项目数量与开发者PC数量)

最重要的部分:当您引用includes / libs时,请使用 relative 路径。例如从Projects \ WebApp \ WebApp.proj,使用“.. \ .. \ Libraries \ include”而不是“C:\ Code \ Libraries \ Include”。为方便起见,这将允许其他开发人员和您的构建服务器将源代码放在别处(D:\ MyWork而不是C:\ Code)。如果你不这样做,有一天当你发现开发人员在C:\上没有足够的磁盘空间时,或者如果你想分支你的源代码控制时,它会咬你。