在Windows上编译和分发Linux代码

时间:2012-07-03 15:29:09

标签: c++ python windows linux porting

我在Linux中运行了更大的代码,用c ++(c ++ 11)和python编写并使用大量库(VTK,boost,pyqt,OpenGL)并编译成python扩展模块(以及这些模块的插件)和纯python模块(主程序是python脚本)。代码是跨平台的(有一些例外,例如dlopengettimeofday,可以通过#ifdef's替换为等效的Windows)和编译器不可知的(它用-ansi编译,并且如果需要,还可以替换一些特定于编译器的事情,例如__attribute__

我正在尝试在Windows上进行编译,但我完全迷失了应该如何继续(我对Linux开发很有经验,但我从90年代末开始就没有使用过Windows。)

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

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

1 个答案:

答案 0 :(得分:0)

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

以下是一些建议......

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