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

我贡献了一个体面的C ++项目与一些依赖关系。 问题是,该项目包含所有依赖项的来源(例如pcre,zlib等)。 我想将项目调整到与程序本身相关的内容。 有没有一些相对标准的方式来编译这些,并将它们放在某个地方,并且还可以轻松访问它们的头文件?

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

Solutions Collecting From Web of "我应该在哪里放第三方库?"

我们在工作场所使用的结构是有一个“External”文件夹,其中包含标题和外部Lib的“Include”和“Lib”文件夹。 但是,因为我们也使用VS,所以我们尽可能使用它的“Dependencies”功能,删除手动输入到链接器。 这意味着只有不属于同一解决方案的项目才会进入“外部”文件夹。 而且,由于我们有一些特定于某些项目的第三方库,我们在项目文件夹内为这些包含和库创建了文件夹。 这是如何得到的:

 \
 | -Project1 \  - >包含Project1.vcproj
 | -Project2 \  - >包含Project2.vcproj
 |  |  - 第三党\
 |  | -Include \
 |  | -lib \
 | -External \
 |  | -Include \
 |  | -lib \
 | -InternalLibrary \  - >包含InternalLibrary.vcproj
 | -Solution.sln  - >包含vcproj,并根据需要通过它的依赖链接它们

我不知道这是否是迄今为止最好的结构,但是一切都在源头控制之下,我们可以通过构建解决方案来做夜晚建设,而开发则通过构建单个项目来进行。

你的陈述中有一个谬误:“我想把项目调整到与项目本身相关的部分。”

相信我,依赖与程序非常相关。 如果您在源代码管理中没有这些功能,那么在引入新的团队成员或切换到新的工作站时,您将遇到无尽的问题。

即使编译“不相关的”库,这些已编译的库也应该放到源代码库中。

我见过一些团队做了以下工作:

  • 将内部代码与外部代码分开(代码与外部公司)
  • 将它们的代码与库代码分开
  • 分开每个程序和每个库
  • 检查它们的依赖关系的编译版本,所以它不是它们完整的构建周期的一部分(至少,不是在某些分支中,其他分支可能会做更完整的构建)

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

解决方案存在于任何团队认为有利的地方,而二进制文件经常被链接,而不是包含在子解决方案中的项目。 只有一个完整的构建,保证不打破新的入伍。

买者自负…