我们经常在较大的项目中使用一些较小的库。
我们仍然将这些较小库的单元测试作为独立的 CI 作业进行编译和运行。
这些库中的大多数使用 QMake 作为构建工具,而不以任何方式使用 Qt。我们开始将 CI 作业转移到 Docker 容器中。现在我意识到我总是必须获得 qt5-default (在 Ubuntu 16 上)才能让 qmake 工作。这是故意的吗?这带来了相当大的开销。有谁知道一种方法,可以在 Ubuntu 16 上使用 qmake 而无需安装整个 Qt?
最佳答案
实际上,您并不需要安装 Qt 即可让 qmake 工作。您需要 qt5-default 的原因是大多数 Linux 发行版都提供 Qt5 和 Qt4,它们具有相同的二进制文件,例如它们都有一个 qmake 版本,其中都会安装到 /usr/bin
中。为了解决该问题,Qt5 安装到 /usr/lib/.../qt5
,Qt4 安装到 /usr/lib/.../qt4
,并且 qt5-default
包创建从那里到 /usr/bin
对于 Ubuntu,...
是 x86_64-linux-gnu
!
您可以选择:
- 仅在 Docker 容器中安装
qt5-qmake
软件包并创建符号链接(symbolic link)/usr/bin/qmake
->/usr/lib/.. ./qt5
.* - 在构建软件时在 {travis, gitlab, jenkins} CI 配置中指定 qmake 二进制文件的完整路径
- 将
/usr/lib/.../qt5/bin
添加到$PATH
* 手动创建符号链接(symbolic link)的正确位置实际上是 /usr/local/bin
因为如果您在 /usr/bin
中有符号链接(symbolic link),则安装 qt5-default
包将会失败,因为 qt5-default
想要创建的符号链接(symbolic link)已经存在。但是,您位于 docker 容器中,实际上可以控制是否安装 qt5-default
,如果您在 /usr/local/bin
中创建符号链接(symbolic link),则必须确保将 /usr/local/bin
添加到您的 $PATH
中,这对于这种情况来说是多余的。
关于qt - 使用 qmake 而不需要 Qt 开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580680/