编译+在Windows上分发Linux代码

我有一个更大的代码在Linux下运行,用c ++(c ++ 11)和python编写,并使用大量库(VTK,boost,pyqt,OpenGL)编译为python扩展模块(以及这些模块的插件)和纯Python模块(主程序是一个python脚本)。 该代码是跨平台的(除了一些例外,如dlopengettimeofday可以通过#ifdef的windows等价物替代)和编译器不可知的(用-ansi编译的,像__attribute__这样的编译器专用的东西也可以如有需要,可能会被replace)。

我正在试图在Windows上进行编译,但是我完全不知道该如何继续(我对Linux的开发有相当的经验,但自从90年代末以来我没有使用过Windows)。

我应该去mingw或MSVC编译器? 我会更好的交叉编译? 我是否需要通过从网上下载安装程序来“手动”安装依赖项; 我是否也需要编译这些? 包含文件是否有标准path,还是全部被检测到? 如果我设法编译它,怎么可以做一些包(它是一组纯Python模块和共享库)?

我想我不是第一个看到它在Windows下是如何工作的(我认为我被包pipe理者和Linux中的所有开发者友好的东西所宠坏),也许在某个地方有一个有用的参考。

我认为你的选择取决于你在Windows下编译的目标。 你准备让其他可以选择开发平台的开发者参与吗? 你想使用不同的编译器来生成额外的警告吗? 你是否希望在Windows平台上部署应用程序? 询问这些问题应该有助于你作出更明智的决定。

这里有一些建议…

  • 尝试MSVC并没有什么坏处。 2010 Express版是支持标准C ++开发的最后一个免费版本。 未来的快速版仅适用于“Metro”应用程序。 我会权衡这与Windows开发的目标,并相应地选择。
  • 对于跨平台构建,请参阅是否可以实施标准化构建系统(如CMake或SCons)。
  • 无论最终决定如何,我都不会运送依赖关系。 Open Source的标准做法是要求开发人员单独下载依赖关系。 只要确保包含当前稳定版本不与您的应用程序向后兼容的任何版本信息。 (或者更好的办法是修复这些问题,这样你就可以从第三方代码中获得最新的补丁。)Python至少应该是开发者的责任。 这意味着要安装,并且pywin32扩展将在Windows安装的系统注册表中注册COM项目。
  • 就招聘开源开发人员而言,您可能会发现需要将MinGW安装在开发人员的计算机上会阻碍一些专门的MSVC用户在该项目上工作。