对外部库的编译器依赖路径的组织
Posted
技术标签:
【中文标题】对外部库的编译器依赖路径的组织【英文标题】:Organisation of compiler dependency paths to external libraries 【发布时间】:2010-09-15 10:41:25 【问题描述】:在我目前的团队中,我们在项目设置中组织对外部库标头的依赖项,如下所示:
编译器设置->其他包括: d:\src\lib\boost_1_43 d:\src\lib\CxImage_6_00 ...
如您所见,我们在路径中包含确切的库版本号。
此方法的advantage
是我们始终知道当前项目中使用的库的确切版本。由于项目设置存储在我们的存储库中,我们还拥有这些设置的完整历史记录。如果有版本更改,负责的开发人员必须更改项目设置并确保新版本没有问题。
我看到的最大的disadvantage
是,对于库的每个新版本,我们都必须触及使用它的每个项目,并更改路径。 (我们不想在我们的主要产品中部署一个库的多个版本)。而且我可以说,你不会通过这个重复的过程结交很多朋友......
您如何在中型项目中处理此问题?您的经验中是否有“最佳实践”?
我对具有大量子项目的 windows/visual studio 2008 环境中的任何解决方案特别感兴趣。
感谢您的建议!
【问题讨论】:
【参考方案1】:您可以使用property sheets 轻松管理常用项目属性。
我的建议是设置这样组织的用户宏:
$(DependenciesPath) => d:\src\lib\
$(BoostPath) => $(DependenciesPath)boost_1_43\
$(CxImagePath) => $(DependenciesPath)CxImage_6_00\
然后,在您的项目属性中,您只需要引用$(BoostPath)
和$(CxImagePath)
而不是特定版本。您可以移动整个依赖项文件夹,并且只需更改属性表中的各种宏即可更改各个依赖项路径。
【讨论】:
我使用的是 Visual Studio 2008。该版本或同等版本中是否有属性表? @nabulke:是的。在链接的 MSDN 页面上,选择顶部的“其他版本”并选择“Visual Studio 2008”。随着 C++ 项目从 VCBuild 迁移到 MSBuild,Visual Studio 2010 中属性表的实现发生了显着变化,但它们在 Visual Studio 2008 中得到支持。 詹姆斯,感谢您的回答。我一定会仔细看看那些属性表!以上是关于对外部库的编译器依赖路径的组织的主要内容,如果未能解决你的问题,请参考以下文章