2010-08-31 82 views
11

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

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

+4

此评论不会有帮助,所以我不会将其作为答案。 Linux/etc有更多的想法。有src,lib,bin,include和其他标准目录名称。当你在Windows下编写一个库时,你可以将库的头文件,源文件等放在任何你想放置它们的地方,并且期望这个世界符合你。您提到的一些库在Linux下可用,因此可能使用标准目录模式 – 2010-08-31 01:47:11

+0

嗯......那是个很好的观点。我想象编译的库进入lib和/或bin(取决于DLL/LIB-ness),并且应用程序代码进入src?我喜欢。 – Twisol 2010-08-31 01:57:06

+3

@Merlyn:我发现Linux有标准的地方放置C库和包含文件,但没有存储*二进制文件的标准位置。尔加! +1发表评论。 – 2010-08-31 03:02:30

回答

7

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

 
.\ 
|-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

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

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

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

+0

好的......我应该说“应用程序特定的代码”。不过,我明白你的观点。但是,构建这个最好的方法是什么?现在,这一切都在一个单一的项目。我应该在一个解决方案中将它分解成单独的项目,还是有更好的方法?我真的不知道最佳做法是在这里,我找不到任何与谷歌。 – Twisol 2010-08-31 01:48:32

+1

我并不完全同意这一点。一旦外部编译完成,Boost安装大约5GB(如果您需要支持VS2010和VS2008,则需要10 GB)。在源代码控制下这是不合理的。 – 2010-08-31 03:03:41

0

我见过群体做到以下几点:从外部代码(代码他们提出VS外部公司)

  • 分开他们从库中的代码
  • 分隔每个程序和每个代码

    • 分离的内部代码库
    • 检查它们的依赖关系的编译版本,所以它不是它们完整生成周期的一部分(至少,不是在某些分支中,其他分支可能会做更完整的生成)

    项目存在于每个exe或库的exe目录下。

    解决方案存在于团队认为有益的任何地方,并且二进制文件经常被链接,而不是包含在子解决方案中的项目。只有完整的构建才能保证不会在新入伍中突围。

    买者自负......