为了能够通过多个应用程序重用代码段,我决定创建我经常需要的函数/类的静态库。因此,我可以更改静态库的代码,并且引用该库的所有应用程序都具有更新的功能。
该体系结构从概念上看如下图:
AppA -> LibA
\
-> LibCommon -> LibX
/ -> LibY
AppB
每个应用程序(AppA,AppB)驻留在不同的解决方案中,以使内容清晰分开。
为了在Visual Studio 2010中完全正常工作,我必须在其解决方案中添加该应用程序使用的每个Lib的项目,在
Additional Include Directories
中添加包含其头文件的文件夹,并添加对直接使用的项目的引用。例如对于AppA,我会;
Additional Include Directories
属性我的第一个问题是:有没有办法只导入应用程序直接需要的库? (LibA和LibCommon)
我的第二个问题:是否有更好的方法在Visual Studio 2010中轻松管理可重复使用的代码? (这里是初级程序员!)
最佳答案
您实际上并不需要包含这些库的项目。编译器只需要.h文件,链接器只需要.lib文件。我要做的是首先在某个固定的目录结构中组织libs项目。然后,我将这些内容添加到LibCommon.h中:
#include "LibXDir/LibX.h"
#include "LibYDir/LibY.h"
#ifdef _DEBUG
#pragma comment (lib, "LibCommon.lib")
#pragma comment (lib, "LibXDir/Debug/LibX.lib")
#pragma comment (lib, "LibXDir/Debug/LibY.lib")
#else
#pragma comment (lib, "LibCommon.lib")
#pragma comment (lib, "LibXDir/Release/LibX.lib")
#pragma comment (lib, "LibXDir/Release/LibY.lib")
#endif
这样,您只需要将LibCommon.h包含在您的应用程序中,它将负责引入其余的库。您可能需要设置其他包含目录和库目录,具体取决于您的设置。或者,您可以将所有.lib文件创建或复制到某个中央lib目录,然后该中央lib目录可能是您唯一要添加的lib目录。
我假设您在使用应用程序时不会修改库。如果是,则必须在更改它们之后重新创建这些库,这可以通过将它们的项目确实添加到解决方案中来完成。但是您仍然可以将大多数依赖项设置在单个文件上,而不是在项目设置上。