我贡献了一个decent-sized C++ project与一些依赖关系。问题是,该项目包含其所有依赖项的来源(例如pcre,zlib等)。我想将项目调整到与程序本身相关的内容。有没有一些相对标准的方法来编译这些库并将它们放在某个地方,并且还可以轻松访问它们的头文件?我应该在哪里放第三方库?
对于它的价值,我使用的是Windows 7,而我正在使用VS2005进行开发。我也是一个在Windows上处理大型C++项目的完整noob;我从来没有真正需要走出标准库和win32。
我贡献了一个decent-sized C++ project与一些依赖关系。问题是,该项目包含其所有依赖项的来源(例如pcre,zlib等)。我想将项目调整到与程序本身相关的内容。有没有一些相对标准的方法来编译这些库并将它们放在某个地方,并且还可以轻松访问它们的头文件?我应该在哪里放第三方库?
对于它的价值,我使用的是Windows 7,而我正在使用VS2005进行开发。我也是一个在Windows上处理大型C++项目的完整noob;我从来没有真正需要走出标准库和win32。
,我们用我的工作场所是有一个包含“包含”和“库”为标题和外部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
我不能说,如果这是有史以来最好的结构,但一切都源代码控制之下,我们可以做夜间构建只需构建解决方案,并研制出通过建立单一项目。
你的陈述中有一个谬误:“我想将项目调整到与程序本身相关的部分。”
相信我,依赖与程序非常相关。如果您在源代码管理中没有这些功能,那么在引入新团队成员或切换到新工作站时,您将遇到无尽的问题。
即使编译“不相关的”库,这些编译的库也应该放到源代码库中。
好的......我应该说“应用程序特定的代码”。不过,我明白你的观点。但是,构建这个最好的方法是什么?现在,这一切都在一个单一的项目。我应该在一个解决方案中将它分解成单独的项目,还是有更好的方法?我真的不知道最佳做法是在这里,我找不到任何与谷歌。 – Twisol 2010-08-31 01:48:32
我并不完全同意这一点。一旦外部编译完成,Boost安装大约5GB(如果您需要支持VS2010和VS2008,则需要10 GB)。在源代码控制下这是不合理的。 – 2010-08-31 03:03:41
我见过群体做到以下几点:从外部代码(代码他们提出VS外部公司)
项目存在于每个exe或库的exe目录下。
解决方案存在于团队认为有益的任何地方,并且二进制文件经常被链接,而不是包含在子解决方案中的项目。只有完整的构建才能保证不会在新入伍中突围。
买者自负......
此评论不会有帮助,所以我不会将其作为答案。 Linux/etc有更多的想法。有src,lib,bin,include和其他标准目录名称。当你在Windows下编写一个库时,你可以将库的头文件,源文件等放在任何你想放置它们的地方,并且期望这个世界符合你。您提到的一些库在Linux下可用,因此可能使用标准目录模式 – 2010-08-31 01:47:11
嗯......那是个很好的观点。我想象编译的库进入lib和/或bin(取决于DLL/LIB-ness),并且应用程序代码进入src?我喜欢。 – Twisol 2010-08-31 01:57:06
@Merlyn:我发现Linux有标准的地方放置C库和包含文件,但没有存储*二进制文件的标准位置。尔加! +1发表评论。 – 2010-08-31 03:02:30