代码之家  ›  专栏  ›  技术社区  ›  Navaneeth K N

C++便携式开源应用程序的最佳实践[关闭]

  •  8
  • Navaneeth K N  · 技术社区  · 16 年前

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

    以下是我的问题

    1. 编译器:我计划使用G++并听说它是跨平台的。这是个好选择吗?
    2. 制作文件:我见过 代码:代码块 编辑器和它生成的即时文件,您不必手动编写。这是最佳实践还是需要创建make文件?
    3. 开发跨平台应用程序时要注意的其他设置是什么?

    有什么想法吗?

    编辑

    谢谢你的回答。还有一个问题。

    你手工创建makefiles吗?或者有什么工具可以生成它吗?

    7 回复  |  直到 16 年前
        1
  •  7
  •   ypnos    16 年前

    对于您的项目来说,最重要的是可移植性。应该很容易为每个人构建和运行。

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

    然而, 一个简单的makefile不能剪切它 . 使用代码块或任何其他IDE生成它都有一个问题:由于他们的平台,其他开发人员可能需要生成自己的代码块,但不一定手头有代码块,或者只是不想使用它。

    存在几种不同的跨平台构建系统,它们是不可知IDE的。他们中的一些人创建makefile,其他人不使用make,而是自己构建。

    • 最广泛采用的构建系统是 Autotools . 然而,这是很难学习,杂乱,和一个全面的痛苦在驴。
    • 在许多其他选择中, 我推荐 Waf . 已经有几个大型开源项目证明了这一点,XMMS2就是一个很好的例子(虽然不是一个非常流行的项目,但它有一个大型的构建,有很多插件,并且构建在许多平台上,包括OS X和Windows)。虽然WAF并没有被广泛采用,但它的目的是与源一起装运,并且易于设置。我给你的建议。

    编辑: 为了开始您的开源项目,我还建议 this book 作者:Karl Fogel(可在线阅读)。玩得高兴!

        2
  •  3
  •   Rob    16 年前

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

    我不再关注要使用的编译器,而是关注要使用的语言。编写ANSI标准C++将有助于实现代码交叉平台。尽可能将平台特定的行为隐藏在一个好的工具箱(如qt)后面。

    对于跨平台构建环境,这可能取决于您使用的工具箱。qt有qmake,比较好。Cmake是另一个令人信服的选择。我会避免使用自动工具,因为它在UNIX之外的可移植性非常差——在win32上使用自动工具常常是该死的人的痛苦。

    最后,开始在多个平台上工作 现在。 对于这样的事情,vmware是无价的。让您的代码在Linux、FreeBSD和Windows上编译。如果你能达到这三个目标,那么在未来转移到其他平台将会非常容易。

        3
  •  2
  •   Mr Fooz    16 年前
    • 现在就开始在多个平台上构建:它会在早期暴露问题。
    • 如果你只关心Linux和MacOSX,那么G++应该就可以了。有各种各样的IDE和构建系统可用。你可能想考虑使用 autotools 以帮助配置支持。
    • 如果你想瞄准Windows,它会变得更加复杂。您可以使用cygwin和/或mingw,但这有时会很复杂。各种项目使用跨平台构建和配置系统,如 CMake 为他们解决许多问题。
        4
  •  2
  •   Wladimir Palant    13 年前

    根据具体的平台, Qt 可以保留答案。尤其是新执照。

        5
  •  1
  •   Nikhil    16 年前
        6
  •  1
  •   dirkgently    16 年前

    编译器:我计划使用G++并听说它是跨平台的。这是个好选择吗?

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

    生成文件:我看到过code::blocks编辑器,它在运行中生成make文件,您不必手动编写。这是最佳实践还是需要创建make文件?

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

    开发跨平台应用程序时要注意的其他设置是什么?

    G++/makefile端口可用于任何主要平台。因此,一旦确定没有使用任何平台特定的API或构造,就应该很好地完成了。

    下面怎么办?

    • 第三方图书馆?确保你不会爱上某个特定的平台。
    • 许可证问题(您的代码和其他)
    • 单片机