C++ 如何在QtCreator中进行远程编译

C++ 如何在QtCreator中进行远程编译,c++,qt,qt-creator,cross-compiling,remote-debugging,C++,Qt,Qt Creator,Cross Compiling,Remote Debugging,我正在Mac OS X中使用QtCreator开发一个应用程序,它必须是跨平台的 我有一个MacOSX作为主机。另外,我在虚拟机上安装了MS Windows,在另一个虚拟机上安装了Ubuntu: MacOSX:Qt5.4.0-64位-clang-Xcode 6.0 MS Windows:Qt 5.3.0-32位-VC++2013 Ubuntu:Qt5.3.0-64位-GCC 我如何在Mac OS上开发应用程序,同时在其他平台(Mac/Windows/Ubuntu)上构建它 QtCreator

我正在Mac OS X中使用QtCreator开发一个应用程序,它必须是跨平台的

我有一个MacOSX作为主机。另外,我在虚拟机上安装了MS Windows,在另一个虚拟机上安装了Ubuntu:

  • MacOSX:Qt5.4.0-64位-clang-Xcode 6.0
  • MS Windows:Qt 5.3.0-32位-VC++2013
  • Ubuntu:Qt5.3.0-64位-GCC
我如何在Mac OS上开发应用程序,同时在其他平台(Mac/Windows/Ubuntu)上构建它


QtCreator中是否有任何远程编译器选项

我不认为您可以在Qt Creator中进行远程编译,但您可以使用连续构建系统来设置一个。所有VM中的构建从机将在SCM中的提交时编译,如git或Subversion

这种方法的优点:

  • 适用于所有主要平台,如Linux、MacOS、Windows
  • 。。以及所有主要的编译器
  • 无论Qt Creator支持多少,您都可以在任意数量的平台上构建
  • 你可以很容易地得到帮助,因为这是在许多专业系统中完成的
  • 您可以分发您的开发
  • 您可以使用任何IDE
  • 你有很大的灵活性和大量的插件,使生活变得简单

注意:还有更多的CI系统,请参阅。

我使用Windows远程编译。我使用plink创建了自定义构建步骤,它使用密钥授权执行远程命令,启动构建。 Qt创建者甚至可以分析返回的错误:)

如何配置它的简短说明:

  • 在putty中为用户创建公钥身份验证,并配置与服务器的连接:

  • 下载plink:

  • 在QtCreator项目中,配置“自定义流程步骤”以连接到服务器并开始编译。 假设你有:

    • 已配置并命名为CentOS7_local的生成服务器的putty会话
    • 用户名
    • 项目位于名为projectname的用户主目录中 您可以使用以下内容(如果您需要更复杂的构建启动,您可以在服务器上创建一个bash脚本并调用它):

  • 在我的上一个位置,我们有一个交叉编译环境。我有一个不同的make文件,每个目标架构(这意味着一个不同的.pro文件)。您需要一个编译器,该编译器可以针对目标体系结构进行编译,也可以针对每个平台编译任何第三方库。我们的环境变大了。恕我直言,QtCreator不支持开箱即用(但这只是猜测)。我们的环境是为C++编译而设置的,而不仅仅是QT。请注意,我们没有Windows目标。只有*nix。因为您已经有了包含给定操作系统的Qt构建环境的虚拟机,只需将每个虚拟机连接到Git,当您需要构建更改时,将它们从远程存储库拉到虚拟机,然后在该虚拟机上编译。@sashoalm,这是非常手动的!我在寻找一个自动化的解决方案。@S.M.Mousavi我明白,只是我怀疑是否存在一个好的解决方案。我敢打赌,最终设置自动化解决方案将需要大量的研究,而设置自动化解决方案最终将花费您的时间,而不是节省。谢谢@sashoalm:-)这似乎是一个不错的解决方案。我会检查的。但在某些情况下,远程构建仍然是有用的。没错,但这种方法会很复杂,而且非常有限。例如,Qt Creator必须能够与外国编译器通信(例如不同版本和不同体系结构的Visual Studio)。您希望在何时为所有可用平台编译—在主机平台的每次编译上?开发这样一个特性不会为QtCreator带来一个插件,而是一个独立的工具,可以处理所有情况。其中一个工具是Hudson/Jenkins。例如,在调试情况下,调试仍然没有问题:您可以像以前一样在本机主机系统上开发、构建和调试。一旦您想要在任何其他平台上构建,您就可以手动或按计划方式发布构建。您可以将构建安排在每次提交后的某个给定时间(夜间构建)进行,只需手动执行,而且要多得多。在Qt Creator中开始构建时,您也可以通过向自定义构建步骤添加触发器构建命令来发布构建。因此,我想您可以实现任何可能对您有用的场景。谢谢,我将对此进行测试。您可以详细描述一下您是如何做到这一点的吗?你会得到很多选票的!老实说(不确定是否可行,但会尝试一下),我认为创建一个普通的远程部署设置(Qt Creator允许您设置一个目标设备,在这种情况下,它将是您可以向本地主机公开的容器)将是一个更流行的解决方案,它不仅允许远程构建,而且还允许(如果您在运行Creator的主机上具有所有依赖项)通过在容器中加载的映像中运行的gdbserver进行远程调试。