【问题标题】:Debugging a Qt app by Qt Creator with a Docker development environment使用 Docker 开发环境通过 Qt Creator 调试 Qt 应用程序
【发布时间】:2021-08-07 19:09:36
【问题描述】:

背景

我正在使用装有 openSUSE Leap 15.1 的笔记本电脑来开发 Qt 应用程序。我升级到 openSUSE Tumbleweed。现在我意识到我的应用程序所依赖的库版本对于 Tumbleweed 是可用的。现在我有这些选择:

  1. 重新安装 openSUSE Leap 15.1(或者可能是 15.2?)
  2. 使用一些 Docker 映像设置开发环境
  3. 使用虚拟机设置开发环境
  4. 不可用的依赖项:直接获取它们的二进制包并在 openSUSE Tumbleweed 上手动安装它们
  5. ...?

问题

关于第二个选项,即 Docker。

已知如何使用 Docker 来部署应用程序。您使用所有依赖项设置开发容器并使用它运行一些部署脚本。

但是,我不知道:

是否可以以 Qt Creator debugger 可用于开发的方式设置 Docker 容器?如果我使用 Docker,是否可以使用 Qt Creator debugger 单步调试代码?

【问题讨论】:

  • 运行旧版 SUSE 但还包括完整显示环境的虚拟机可能更合适。
  • @DavidMaze 谢谢!我也在看这个,但我不太明白:qt.io/blog/docker-builds-from-qtcreator
  • @DavidMaze 我发布了一个我不确定的计划。我错过了什么吗?我要测试一下=)

标签: c++ docker qt containers qt-creator


【解决方案1】:

这种情况是否可能:

  1. 拉取一个 openSUSE Leap 15.1 Docker 镜像
  2. 设置绑定挂载卷,将容器内部的/usr/lib64/ 目录链接到主机上的~/leaplib 目录。这意味着~/leaplib:/usr/lib64/
  3. 对开发标头执行相同操作,即~/leapinclude:/usr/include/
  4. Bindmount 过程解释here
  5. 在 openSUSE Leap 15.1 容器上安装所有 Qt 项目依赖项
  6. 因此,所有依赖库和头文件都将安装在容器 bindmount 卷中
  7. 在主机上的 Qt Creator 项目中,将 ~/leaplib 添加到库路径
  8. 在主机上的 Qt Creator 项目中,添加 ~/leapinclude 以包含路径
  9. Qt 项目源代码库当然在宿主机上
  10. 使用 Qt Creator 打开项目存储库源代码
  11. 您应该能够使用 Qt Creator 调试器开发和调试代码,对吧?

上述计划尚未经过测试。不确定它是否会起作用。任何想法?我错过了什么吗?

【讨论】:

  • 绑定挂载卷将隐藏那些容器目录中已经存在的所有内容。如果您在/usr/lib64 上挂载一个空目录,则很可能无论主容器进程是什么都不会启动。
  • 如果您知道需要预装一些软件,那么最好在 Dockerfile 中执行此操作,而不是尝试使用卷来保存更改。
  • @DavidMaze 如果依赖包安装在/usr/local/lib64/ 中,那么bindmount 卷可能会起作用。对吗?
  • @DavidMaze This post 提供了一种可能在/usr/local/lib64/ 中安装依赖包的方法。
  • @DavidMaze 感谢Dockerfile 的提示。我正在学习Dockerfile...
【解决方案2】:

另一种情况:

  1. 利用@DavidMaze 建议的docker-composeDockerfile
  2. 创建一个 docker-compose.yml 文件定义自定义绑定挂载卷,以便能够在容器和主机之间共享数据
  3. 创建一个以FROM opensuse/leap:15.1 开头的Dockerfile
  4. zypper --root /usr/local/安装Dockerfile中的所有依赖包
  5. 所需的容器数据将在 /usr/local/lib64//usr/local/lib//usr/local/include/
  6. 通过将数据复制到在docker-compose.yml 文件中定义的自定义绑定挂载卷,与主机共享所需的容器数据
  7. 将 bindmount 卷添加到 Qt Creator 库路径并包含路径
  8. 使用Qt Creator在宿主机中调试源代码

有什么遗漏吗?

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2013-08-22
    • 2010-11-10
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多