我建议这种方法:
在根文件夹中组织您的代码。我们称之为代码。
现在将您的项目和库作为子文件夹(例如项目和库)。
像平常一样构建库,然后添加生成后步骤,将生成的头文件和.lib文件复制到一组共享文件夹中。例如,Libraries \ include和Libraries \ lib。使用子文件夹或命名约定(myLib.lib,myLib_d.lib)来区分不同的构建版本(例如调试版和发行版)是一个不错的主意,这样任何lib引用都明确地定位一个永远不会混淆的单个文件。当你不小心链接到一个lib的错误变体时它会很糟糕!
您也可以将您使用的第三方库复制到这些文件夹中。
注意:为了保持它们的有序性,请使用#include“Math \ Utils.h”而不是“Utils.h”包含文件。并将整个数学库的标题放入include \ Math,而不是全部放入include文件夹的根目录。这样你可以有很多没有名字冲突的库。它还可以让您拥有不同版本的库(例如Photoshop 7,Photoshop 8),它允许您在不同的运行时环境中多重定位您的代码。
然后设置您的项目引用以下两种方式之一的库:
1)告诉你的IDE /编译器,其中库是利用其全球的lib/include路径。这意味着您可以在每台PC上设置一次IDE,而不必指定任何项目的库位置。
2)或者,将每个项目设置为使用它自己的lib/include路径引用libs。这为您提供了更大的灵活性,避免了设置每台PC的需求,但意味着您必须在每个新项目中设置相同的路径。
(哪一个是最好取决于项目与开发PC的数量数)
而且最重要的部分:当你引用包括/库,使用相对路径。例如从Projects \ WebApp \ WebApp.proj中,使用“.. \ ..\ Libraries \ include“而不是”C:\ Code \ Libraries \ Include“,这样可以让其他开发者和buildserver在其他地方(D:\ MyWork代替C:\ Code)如果你找到一个开发人员在C:\上没有足够的磁盘空间,或者你想分支你的源代码控制,它会咬你一天。“
*”当你引用includes/libs时,使用relative路径“* ......倾向于将'../../ Libraries/Include'放入项目中包含目录,而不是明确引用标头,这样可以避免在您决定移动包含时破坏代码 – 2010-01-07 22:27:54
当AppX使用DatabaseUtils的HEAD版本,但是AppY不能在同一个项目的r1234之后的任何修订版本上工作吗?当我想将boost1.2.3和boost1.2.4作为单独的项目说出时,您的解决方案就可以正常工作 - 它们会像这样释放它们。通常是一个用户lity项目仍在开发中,新的更改会破坏旧应用程序的功能。 – 2010-01-07 22:35:37
@gf:我的意思是说./../Libraries/Include在你的INCLUDE_PATH中,但是你的#include将使用不同库的子文件夹,即#include“Math \ Utils.h”。否则,你必须在一个文件夹中放置一百万个头文件,并且最终会产生许多带有名称冲突的文件(比如每个库中用于不同的东西的“types.h”) – 2010-01-08 07:48:54