大规模跨平台软件项目的提示/资源

时间:2010-11-14 23:07:41

标签: c++ qt4 cuda

我将开始一个涉及跨平台GUI和大量数字运算的大型软件项目。我计划在C ++和CUDA中编写大部分应用程序后端,在Qt4中编写GUI。我计划使用Make作为我的构建系统。这将是一个只有两个开发人员的项目,一旦我相对较远,它可能最终成为一个开源项目。

我的主要问题是,是否有人有任何提示/资源来开发软件背后的架构。

  • 构建文件的好方法是什么? (数字运算代码在一个单独的文件夹中,而不是gui代码,它与已编译的可执行文件分开,或其他什么?)
  • 构建系统如何适用于跨平台软件?我是否需要为每个平台设置不同的构建系统,或者我是否可以根据调用的平台创建一个不同构建的通用“makefile”?
  • 我需要对我的代码进行哪些修改才能确保它能在所有平台上正确构建(预处理器指令等等)?
  • 如何处理大型项目的修订控制并将其集成到构建系统中,以便每次构建项目时都获得更新的Version.Revision.Build数字?

我很沮丧的事实是,我即将毕业的大学几乎没有涵盖这一点。在这一点上,我已经做了很多谷歌搜索,运气不足我需要的东西。我并不是要求用勺子喂食所有东西,我会完全满足于与此相关的书籍或网站的链接。

我已经分别完成了大部分这些工作,但我从未尝试将所有内容组合成一个大包。

有人会推荐Release It!: Design and Deploy Production-Ready Software我正在询问的内容吗?

2 个答案:

答案 0 :(得分:2)

1)结构可以相同,但如果您在子目录中包含文件,请确保使用'/而不是\。前者也适用于Windows。

2)我会查看cmake(http://www.cmake.org/)来管理跨多个平台的构建。这将为您带来很多痛苦。

3)尽可能多地使用STL和Boost。这些库的设计考虑到了这个问题。这将涵盖您可能需要做的大部分内容。您已经选择了优秀的Qt库,因此您的GUI也不是问题。通过这3个组合,您已经完成了大部分工作。也就是说,您可能必须做一些与平台无关的事情,而不是任何这些事情。为此我建议您编写一个类,在所有平台上公开一致的接口,并在源文件中隐藏预处理器指令的细节。公开一致的界面势在必行。

4)使用SVN。我不知道如何在其他编译器上执行此操作,但在Visual Studio中获取最新版本并将其插入到某个文件中然后将其包含在项目中是微不足道的。您可以使用构建事件来执行此操作。对不起,我无法详细说明其他平台。

此外,如果你必须在STL之外,Boost,Qt etceteras,请注意所有平台上API调用的文档。我曾经被fseek() API调用的行为所困扰,该调用在一个实现上写入字节以填充到目标,而不是另一个实现。如上所述,这些可能是头痛的主要原因和尝试坚持试用和测试的库的另一个原因。

答案 1 :(得分:0)

Qt符合您的要求,IMO ..我会回复Qt的来信。

关于文件的结构,您可以在文件夹中包含源文件*.cpp*.h,在其他文件夹中包含剩余的库和依赖项。您可以使用Qt设计器创建*.ui文件,也可以直接编写它们。 (其中后者将大大增加编译时间)生成的文件(如*.exe*.obj等)可以放在一个单独的文件夹中,以便您的文件系统看起来一致。有一些简单的方法可以在Qt中完成上述所有操作。在这里查看QMake ..

关于可移植性,您可以轻松地在各种平台上移植Qt个应用程序。查看here ..

关于源代码管理,我习惯SVN,我们对它很好。只需选择一个满足您需求的产品即可。

由于您即将毕业,Qt与其他人相比显然具有一些优势。

  1. 从我提供给您的链接, 你可能已经明白了 Qt的文档非常广泛 你可以毫不费力地工作 专业支持。
  2. 最重要的是Qt在LGPL,你可以免费玩......:)
  3. HTH ..