2

我有一个更大的代码在 Linux 中运行,用 c++ (c++11) 和 python 编写,并使用许多库(VTK、boost、pyqt、OpenGL)并编译为 python 扩展模块(和这些模块的插件)和纯 python 模块(主程序是一个python脚本)。该代码是跨平台的(有一些例外,例如dlopengettimeofday可以通过#ifdef 替换为 Windows 等效项)和编译器无关(它使用 编译-ansi,并且一些特定于编译器的东西__attribute__也可以,希望,被替换,如果需要的话)。

我正在尝试在 Windows 上进行编译,但我完全不知道应该如何进行(我对 Linux 的开发经验相当丰富,但自 90 年代后期以来我就没有使用过 Windows)。

我应该选择 mingw 还是 MSVC 编译器?我会更好地交叉编译吗?我是否需要通过从网上下载安装程序来“手动”安装依赖项?我也需要编译这些吗?是否有包含文件的标准路径,或者是否都可以检测到?如果我设法编译它,如何制作某种包(它是纯 python 模块和共享库的捆绑包)?

我假设我不是第一个试图了解它在 Windows 下如何工作的人(我认为我被包管理器和 Linux 中所有对开发人员友好的东西宠坏了),也许在某个地方有一个有用的参考。

4

1 回答 1

0

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

这里有一些建议...

  • 尝试 MSVC 并没有什么坏处。2010 express edition 是最后一个支持标准 C++ 开发的免费版本。未来的快速版本仅适用于“Metro”应用程序。我会根据你的 Windows 开发目标权衡它并做出相应的选择。
  • 对于跨平台构建,看看您是否可以实现标准化的构建系统,例如 CMake 或 SCons。
  • 无论最终决定如何,我都不会附带依赖项。开源要求开发人员单独下载依赖项是标准做法。只要确保包含当前稳定版本与您的应用程序不向后兼容的任何内容的版本信息。(或者更好的是,修复这些问题,以便您从 3rd 方代码中的最新修复程序中受益。)Python 至少应该是开发人员的责任。它是要安装的,pywin32 扩展将在 Windows 安装的系统注册表中注册 COM 项。
  • 至于招募开源开发人员,您可能会发现要求在开发人员的机器上安装 MinGW 会阻止一些专门的 MSVC 用户从事该项目。
于 2012-07-05T15:46:18.620 回答