我应该在哪里放置第三方库?

时间:2010-08-31 01:39:06

标签: c++ windows header location libraries

我为decent-sized C++ project贡献了许多依赖项。问题是,项目包含所有依赖项的来源(例如pcre,zlib等)。我想将项目减少到与程序本身相关的内容。是否有一些相对标准的方法来编译这些库并将它们放在某处,并且还可以轻松访问它们的头文件?

对于它的价值,我使用的是Windows 7,而我正在使用VS2005进行开发。我也是一个在Windows上从事大型C ++项目的完整菜鸟;我从来没有真正需要走出标准库和win32。

3 个答案:

答案 0 :(得分:7)

我们在工作场所使用的结构是一个“外部”文件夹,其中包含标题和外部Libs的“Include”和“Lib”文件夹。但是,由于我们也使用VS,我们尽可能地使用其“依赖关系”功能,删除链接器的手动输入。这意味着只有不在同一解决方案下的项目才会进入“外部”文件夹。此外,由于我们有一些特定于某些项目的第三方库,我们在项目文件夹中为这些包含和库创建文件夹。这就是它的结果:

.\
|-Project1\ --> contains Project1.vcproj
|-Project2\ --> contains Project2.vcproj
| |-Third-Party\
|   |-Include\
|   |-Lib\
|-External\
| |-Include\
| |-Lib\
|-InternalLibrary\ --> contains InternalLibrary.vcproj
|-Solution.sln --> includes the vcproj's and link them as necessary by its dependencies

我不知道这是否是有史以来最好的结构,但是一切都在源代码控制之下,我们可以通过构建解决方案来进行夜间构建,并且通过构建单个项目进行开发。

答案 1 :(得分:1)

你的陈述中有一个谬论:“我想把项目缩减到与程序本身相关的内容。”

相信我,依赖关系与程序密切相关。如果您在源代码管理中没有这些,那么在引入新的团队成员或切换到新工作站时,您将不会遇到任何问题。

即使编译“不相关”的库,这些编译的库也应该进入你的源库。

答案 2 :(得分:0)

我见过小组做了以下事情:

  • 将内部代码与外部代码分开(代码与外部公司对比)
  • 将他们的代码与库代码分开
  • 分离每个程序和每个库
  • 检查其依赖项的编译版本,因此它不是其完整构建周期的一部分(至少,不在某些分支中。其他分支可能会执行更完整的构建)

每个exe或库都存在于exe / library目录中的项目。

解决方案存在于团队认为有益的地方,并且二进制文件经常被链接,而不是他们的项目包含在子解决方案中。只有完整的版本才能保证不会在重新入伍时中断。

警告经理......