Skip to content

lbbit/docker_qt_build

Repository files navigation

Qt 编译环境 Docker 容器

本项目提供了一个用于构建 Qt 应用的 Docker 容器环境。该环境预装了多种开发工具和库,支持多平台的 Qt 应用编译。

容器环境内容

该 Docker 容器基于 ubuntu:16.04 镜像,包含以下主要组件:

  • Qt 框架: 默认安装 Qt 5.15.2 版本。
  • 开发工具: 包括 build-essentialg++-aarch64-linux-gnug++-arm-linux-gnueabihf 等编译工具。
  • 多平台Qt编译:支持 x86_64、ARMv7 和 AArch64 架构的Qt应用交叉编译。
  • 辅助工具: 如 wgetgitvim 等常用工具。
  • linuxdeployqt: 用于打包 Qt 应用的工具。

修改 Qt 版本

若需要使用不同版本的 Qt,可以通过修改 Dockerfile 中的环境变量来实现:

  1. 打开 Dockerfile 文件。

  2. 修改 ENV QT_MAIN_VERSIONENV QT_VERSION 的值为所需的版本号。例如:

    ENV QT_MAIN_VERSION 5.15
    ENV QT_VERSION 5.15.14
  3. 重新构建 Docker 容器。

构建容器

在构建容器之前,请确保本地环境已安装 Docker。安装方法请参考 Docker 官方安装指南

构建 Docker 容器的步骤如下:

  1. 下载或克隆本项目代码到本地。

  2. 打开终端,切换到包含 Dockerfiledocker-build.sh 的目录。

  3. 执行以下命令以构建 Docker 容器:

    sudo ./docker-build.sh

此脚本会自动执行 Docker 的构建过程,构建完成后,您将得到一个名为 hc_sw/qt_builder 的 Docker 镜像。

使用容器

运行容器:

# 启动一个交互式容器,并挂载当前目录下的 `code` 目录到容器的 `/qt/code` 目录
docker run -it -v ./code:/qt/code --name qt_builder_sh hc_sw/qt_builder

# 使用run脚本创建交互式容器
./docker-run-shell.sh

# 使用start脚本启动已经存在的容器
./docker-start-shell.sh

# 新建一个shell进入正在运行的容器
docker exec -it qt_builder_sh bash

编译Qt应用

可以通过容器的环境变量QT_VERSION获取Qt版本。

QT_INSTALL_X86_DIR=/opt/Qt${QT_VERSION}/${QT_VERSION}/gcc_64
QT_INSTALL_AARCH64_DIR=/opt/Qt${QT_VERSION}/${QT_VERSION}/aarch64
QT_INSTALL_ARM_DIR=/opt/Qt${QT_VERSION}/${QT_VERSION}/arm

# 编译x86_64架构的Qt应用
QMAKE_CMD=${QT_INSTALL_X86_DIR}/bin/qmake
cd qt_example && ${QMAKE_CMD} && make -j4

# 编译ARMv7架构的Qt应用
QMAKE_CMD=${QT_INSTALL_ARM_DIR}/bin/qmake
cd qt_example && ${QMAKE_CMD} && make -j4

# 编译AArch64架构的Qt应用
QMAKE_CMD=${QT_INSTALL_AARCH64_DIR}/bin/qmake
cd qt_example && ${QMAKE_CMD} && make -j4

执行Qt应用

注意:缺省的容器启动配置下仅支持运行无界面的Qt程序

# 假设编译成功的qt_example可执行程序在output目录下
QT_QPA_PLATFORM=offscreen ./output/qt_example

打包Qt应用

注意:仅支持打包x86_64架构的Qt应用

# 先设置Qt环境变量
QT_INSTALL_X86_DIR=/opt/Qt${QT_VERSION}/${QT_VERSION}/gcc_64
export LD_LIBRARY_PATH=${QT_INSTALL_X86_DIR}/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=${QT_INSTALL_X86_DIR}/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=${QT_INSTALL_X86_DIR}/qml:$QML2_IMPORT_PATH

# 假设编译成功的qt_example可执行程序在output目录下
cd output && linuxdeployqt ./qt_example -appimage

About

qt交叉编译容器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors