如何编译qtimageformats?

How to compile qtimageformats?

最近发布的 Qt 6.0.0 改变了 qtimageformats 的分布。 Thay 不再是预构建的,必须在本地构建。

我检查了 QT git 来源 here

git clone git://code.qt.io/qt/qt5.git
cd qt5
git checkout v6.0.0

然后,我编辑了 .gitmodules 文件并将 qtimageformats 的忽略标志更改为 'addon'。我发现配置脚本是基于 .git 模块和这些标志的。

[submodule "qtimageformats"]
    depends = qtbase
    path = qtimageformats
    url = ../qtimageformats.git
    branch = dev
    status = addon

我根据 Qt doc.

设置了所需的构建环境
REM Set up Microsoft Visual Studio 2019, where <arch> is amd64, x86, etc.
CALL "C:\Program Files (x86)\Microsoft Visual Studio19\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET _ROOT=C:\Qt6\Qt5
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET _ROOT=

然后,我检索了 Qt docs 中描述的所有 git 个模块。

perl init-repository

到现在为止 - 一切正常。 configure 帮助确实显示了 qtimageformats 选项。

configure --help
...
...
Further image format options:

  -jasper .............. Enable JPEG-2000 support using the JasPer library [no]
  -mng ................. Enable MNG support [no]
  -tiff ................ Enable TIFF support [system/qt/no]
  -webp ................ Enable WEBP support [system/qt/no]

但是,现在我陷入了以下错误。 configure?

似乎无法识别这些选项
c:\qt6\qt5>configure.bat -tiff qt
+ cd qtbase
+ c:\qt6\qt5\qtbase\configure.bat -top-level -tiff qt
CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:227 (message):
  Unknown command line option '-tiff'.
Call Stack (most recent call first):
  qtbase/cmake/QtProcessConfigureArgs.cmake:531 (qtConfAddError)

Qt 6 没有关于 qtimageformats 的文档 - 所以我可能错过了一些东西但不知道是什么。欢迎任何想法!

终于,我成功了。我找到了关于 Qt6 的 Phoronix article

Qt6 开始使用 conan.io 包管理器。所以 Qt 安装程序提供的源已经足够了。它将 qtimageformats 的源下载到以下位置 ~/Qt/AdditionalLibraries/Qt/qtimageformats-6.0.0.

柯南会做剩下的事情。

MacOS [共享库]

cd ~/Qt/AdditionalLibraries/Qt/qtimageformats-6.0.0/Src
export QT_PATH=~/Qt/6.0.0/clang_64
~/Qt/Tools/Conan/conan install . -o qtimageformats:shared=True
~/Qt/Tools/Conan/conan build .

PS: install 命令确实在 build 命令之前 - 这不是错误。

库已在 MacOS 上成功构建。


Windows [共享库]

CALL "C:\Program Files (x86)\Microsoft Visual Studio19\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
SET QT_PATH=C:\Qt.0.0\msvc2019_64
cd C:\Qt\AdditionalLibraries\Qt\qtimageformats-6.0.0\Src
md build
cd build
C:\Qt\Tools\Conan\conan install .. -s build_type=RelWithDebInfo
C:\Qt\Tools\Conan\conan build ..
C:\Qt\Tools\Conan\conan build ..

PS: 第一个conan build 命令会失败,因为生成的cmake 文件不适合并行构建。第二个 conan build 命令将会成功。 如果您现在知道如何说服 conan.io 在没有 conanfile.py 的情况下禁用并行构建,请告诉我们。

在我使用新的 CMake 框架自己构建 Qt 之后,构建这些额外包的最简单方法仍然是在包的根目录中使用 qmake,例如(例如在 WINDOWS 使用 VS):

set PATH=c:\Qt.0.0\bin;%PATH%
qmake <package>.pro
nmake
nmake install

第一行只是提供了我的 qt6 qmake 的路径。