在Windows上管理用于C ++开发的库集合

时间:2014-01-05 14:58:20

标签: c++ windows

我负责开发一套C ++库和程序。目前在Linux和MacOS上构建,但Windows支持也是一项要求。我们需要支持VS2010和VS2012,未来还将包括VS2013和MinGW。我们正在使用cmake进行构建,因此我们的代码应该在所有平台上构建而不会出现问题;我的问题是如何管理Windows上的所有依赖项,以便能够在第一时间构建,并随着时间的推移使其保持最新。目前,我们每个visual studio版本都有一个虚拟机作为jenkins slave,因此所有变体的并行构建相当容易,但管理它不是。

问题在于需要构建的变体数量。如果我们只考虑VS2010和VS2012,使用调试/发布和i386 / x64版本,那么每个库已经有8个副本; 16如果我们包括其他编译器。我们将需要我们的代码所依赖的所有库,其中包括至少boost,qt,xerces + xalan,zlib,icu,libpng / tiff / jpeg,hdf5等等,以及python及其所有依赖项。随着新的上游版本的发布,我们需要使整个集合保持最新并且对所有构建/ arch /编译器变体保持一致。

我不想手动执行此操作,因为这确实需要自动化。但是,我不知道在Windows上执行此操作的任何好方法。我在其他项目中看到的Windows构建指南通常涉及手工构建所有依赖项,并且只构建单个变体。在Linux上,它已经打包,您不需要单独的调试版本,并且可以使用chroot来满足arch变体;在MacOS上有自制软件,macports等,而且在那里自动化东西也相当简单。是否有Windows的等价物?我看过像巧克力这样的东西,但它完全不适合处理库,并且作为包管理器很差。

对于在Windows上进行C ++开发的人来说,这似乎应该是一个常见问题?是否有任何通用的解决方案,工具或方法来管理一组复杂的库和开发工具?其他开发人员如何管理这个?

NB。仅供记录,我们没有使用visual studio应用程序;我们通过使用cmake和/或msbuild直接驱动编译器的脚本以非交互方式进行所有构建。

非常感谢, 罗杰

2 个答案:

答案 0 :(得分:0)

我参与了提供X86 Release,x86 Debug,x64 Release和x64 debug的大型Windows C ++项目。非常类似,我使用构建系统,使用自定义脚本为所有目标平台执行并行构建。

我们管理有组织文件夹中的所有第三方依赖库。 例如x86 \ release \ Zlib.dll x86 \ Debug \ zlib.dll x64 \ release \ zlib.dll x64 \ zlib.dll

自定义脚本用于从配置管理工具中选择所有这些库和项目源代码。这允许根据需要自动构建相关的目标二进制文件。

任何第三方库更改都会在配置管理工具中更新,然后由脚本选中以进行下一次构建。

关于VS2010和2012支持的问题,我不太了解重要性。 VS的一个版本不足以支持该项目吗?

答案 1 :(得分:0)

您可以查看http://www.gisinternals.com/sdk/及其构建系统https://github.com/gisinternals/buildsystem

它基本上是一组批处理和make文件互相调用。您仍需要手动跟踪lib更新。