在Linux和Windows上同时进行C++开发

Nac*_*ack 12 c++ cross-platform

我们有一些开发人员致力于非商业(阅读:只是为了好玩)的跨平台C++项目.我们已经确定了我们需要的所有跨平台库.但是,我们的一些开发人员更喜欢使用Microsoft Visual C++ 2008,而其他人更喜欢在GNU/Linux上使用Emacs编写代码.我们想知道我们所有人是否有可能在同一个代码库中同时或多或少地同时从两个环境中工作.最终,我们希望项目从一开始就在两个平台上进行干净的编译.

如果不可能,我们的任何开发人员都乐意切换到其他环境.我们都定期使用Linux和Windows并同时享受这两者,所以这不是试图教育一组开发者关于另一个平台的优点的问题.这是关于我们每个人都能够在我们最喜欢的环境中发展,但仍然在一个有趣的项目上进行合作.

有什么建议或经验可以分享吗?

Ree*_*sey 15

使用CMake管理您的构建文件.

这将允许您设置一个存储库,其中包含一组文本文件.然后,每个开发人员都可以运行适当的cmake脚本,为他们的系统构建正确的构建环境(Visual Studio 2008/2005/GNU C++构建脚本/等).

这里有很多优点:

  • 每个dev都可以使用自己的构建环境
  • 可以非常干净地处理依赖关系,包括特定于平台的deps.
  • 构建可能不在源头,这有助于防止意外提交不适当的文件
  • 轻松迁移到新开发.环境(即:当VS 2010发布时,一些开发人员可以通过重建他们的构建文件夹来迁移到那里)


Ala*_*son 12

我已经做到了,看到它完成没有太多问题.

您将要尝试隔离不同平台的不同代码.此外,您还需要考虑目录结构.就像是

  • project/src < - .cc和.h文件
  • project/src/linux | win < - 特定于一个平台或另一个平台的代码
  • project/linux < - make文件和其他项目相关的东西
  • project/win < - .sln和.csproj文件

基本上,您只是想清楚地了解每个系统的具体内容以及常见的内容.

此外,单元测试将非常重要,因为可能存在细微的差别,并且您希望让Windows人员轻松运行一些测试以确保linux代码按预期工作,反之亦然.


3DH*_*3DH 5

如前所述,Qt是一种非常简单的方法,可以实现真正的同步多平台开发 - 独立于您的IDE和许多不同的编译器(即使是Symbian,ARM,Windows CE/Mobile ......).

在我上一个和现在的公司,我在混合的Linux和Windows开发团队工作,他们使用Subversion和Qt(它有一个非常简单和强大的构建系统"QMake"一起工作,它隐藏了所有不同的平台/编译器特定构建环境 - 你只需要为所有平台编写一个构建文件- 这很简单!).

而且:Qt几乎包含了你需要的一切:

  • 简单的字符串处理,简单的翻译支持和简单的字符串转换(utf8,utf16,asci ...)
  • 文件i/o,图像,网络等的简单类
  • 舒适的gui课程
  • gui布局/设计的图形设计师
  • 图形翻译工具,为您的应用程序创建动态翻译(您可以使用不同的可选语言运行一个二进制文件 - 甚至是西里尔文,亚洲字体...)
  • 综合测试框架(单元测试)

所以Qt是一个功能齐全且非常可靠的环境 - 我用了10年.

并且:Qt无缝集成到VC++,Eclipse等IDE中,或者提供自己的IDE"QtCreator".

见:http: //www.trolltech.com + http://doc.trolltech.com

最诚挚的问候,克里斯