C ++可移植开源应用程序的最佳实践

时间:2009-03-26 03:47:24

标签: c++ open-source compiler-construction makefile

我正在用C ++开始一个开源跨平台项目。我的开发环境是Linux。可能还有其他开发人员也从不同的平台开发。因此,我需要一些帮助来开始配置和开发环境设置,以便来自多个平台的所有开发人员都可以轻松开发。

以下是我的问题

  1. 编译器:我打算使用g ++并听说它是跨平台的。这是一个不错的选择吗?
  2. 制作文件:我见过 Code :: Blocks 编辑器,它可以快速生成make文件,而不必手动编写。这是最佳做法还是我需要创建make文件?
  3. 开发跨平台应用程序时需要注意哪些其他设置?
  4. 有什么想法吗?

    修改

    感谢您的回答。还有一个问题。

    你手工制作makefile吗?或者是否有任何工具可以生成它?

7 个答案:

答案 0 :(得分:7)

让您的项目赶上来最重要的是可移植性。它应该很容易建立和为每个人奔跑。

GCC(g ++)确实是首选的编译器。它来自开源世界,因此被它广泛采用。

然而,一个简单的Makefile不会削减它。使用CodeBlocks或任何其他IDE生成它有一个问题:由于他们的平台,其他开发人员可能必须生成自己的,但不一定有手头的CodeBlock,或者只是不想使用它。

存在几种不同的跨平台构建系统,它们与IDE无关。其中一些创建Makefile,另一些不使用make,而是自己构建。

  • 最广泛采用的构建系统是Autotools。然而,它很难学习,混乱,并且整体上很痛苦。
  • 在众多其他选择中,我建议Waf 。已经有几个较大的开源项目证明了这一点,XMMS2就是一个很好的例子(虽然不是一个非常受欢迎的项目,它有一个包含大量插件的大型构建,并且构建在很多平台上,包括OS X和Windows)。虽然waf没有被广泛采用,但它意味着与源一起提供并且易于设置。我的推荐给你。

编辑:开始使用您的开源项目,我还推荐了Karl Fogel的this book(可在线阅读)。玩得开心!

答案 1 :(得分:3)

GNU C ++编译器是跨平台工作的一个相对不错的选择,除了在Windows上只支持相对较旧的版本(3.4)。正在努力将4.x系列移植到Windows,但到目前为止尚未准备好迎接黄金时段。

我不是专注于使用哪种编译器,而是专注于使用哪种语言。编写ANSI标准C ++将大大有助于使代码跨平台化。尽可能隐藏优秀工具包背后的平台特定行为,例如Qt。

对于跨平台构建环境,这可能取决于您使用的工具包。 Qt有QMake,相对较好。 CMake是另一个引人注目的选择。我会避免使用Autotools,因为它在UNIX之外的可移植性非常差 - 在Win32上使用Autotools往往是该死的折磨。

最后,现在就开始在多个平台上工作。 VMware对于这样的事情非常宝贵。让你的代码在Linux,FreeBSD和Windows上编译。如果你可以达到这三个目标,将来转移到其他平台将会非常容易。

答案 2 :(得分:2)

根据具体平台,Qt可能会有答案。特别是新的许可证。

答案 3 :(得分:2)

  • 现在开始在多个平台上构建:它会在早期暴露问题。
  • 如果您只关心Linux和Mac OS X,那么g ++应该没问题。有各种IDE和构建系统可用。您可能需要考虑使用autotools来帮助配置支持。
  • 如果您想要定位Windows,它会变得有点复杂。您可以使用cygwin和/或mingw,但有时可能会很复杂。各种项目使用跨平台构建和配置系统(如CMake)来处理许多问题。

答案 4 :(得分:1)

  

编译器:我打算使用g ++并听说它是跨平台的。这是一个不错的选择吗?

是的,但是哪个版本?您是否有您要使用的版本的已知问题列表?

  

制作文件:我看过Code :: Blocks编辑器,它可以快速生成make文件,而不必手动编写。这是最佳做法还是我需要创建make文件?

经典的选择。当项目增长时,您可能需要调整它们。

  

开发跨平台应用程序时需要注意哪些其他设置?

g ++ / makefile端口可用于任何主要平台。因此,一旦确定您没有使用任何特定于平台的API或构造,您就应该好好去。

以下情况如何?

  • 第三方图书馆?确保您不适合特定平台。
  • 许可问题(您的代码和其他人)
  • SCM

答案 5 :(得分:1)

答案 6 :(得分:1)

相关问题