我负责开发一套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直接驱动编译器的脚本以非交互方式进行所有构建.
非常感谢,罗杰