我为decent-sized C++ project贡献了许多依赖项。问题是,项目包含所有依赖项的来源(例如pcre,zlib等)。我想将项目减少到与程序本身相关的内容。是否有一些相对标准的方法来编译这些库并将它们放在某处,并且还可以轻松访问它们的头文件?
对于它的价值,我使用的是Windows 7,而我正在使用VS2005进行开发。我也是一个在Windows上从事大型C ++项目的完整菜鸟;我从来没有真正需要走出标准库和win32。
答案 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目录中的项目。
解决方案存在于团队认为有益的地方,并且二进制文件经常被链接,而不是他们的项目包含在子解决方案中。只有完整的版本才能保证不会在重新入伍时中断。
警告经理......