从源代码包中安装适用于 Qt 的 Squish
通常情况下,客户不需要构建整个Squish,只需构建与AUT二进制兼容的部分。这包括 squishserver
、startaut
以及托盘库。
快速安装
如果AUT使用非标准的编译器选项或非标准的Qt配置,则必须使用用于构建AUT的相同编译器和Qt库来从源代码编译Squish的部分。
快速安装方法是这样做的
- 将需要从源代码构建的组件限制为必须与AUT二进制兼容的组件。
- 将它们构建和安装到 SQUISHDIR。
可以按照分发和共享安装中的说明,将定制版本的Squish分发到运行相同操作系统的不同计算机上。
基本要求
构建和安装必须满足某些要求。其中一些要求涉及Squish本身所构建的Qt库,还有一些要求涉及构建过程中使用的工具。
- 必须可获取Qt 4.8或更高版本。
- 必须具备与用于构建Qt的版本相兼容的C++编译器。
支持的编译器
Squish已经在各种Windows和类Unix系统上进行了测试,以及使用了几种不同的编译器。通常,我们对每个Qt的二进制发布版、每个我们的官方平台,都发布一个针对Qt的Squish,使用用于构建Qt的相同编译器。如果可能,您在构建Squish时也应该这样做。
确切的编译器要求取决于您使用的Qt版本。下面提供了一些链接以获取更多信息。
配置和构建
以下步骤基于Linux/Unix系统,但将以类似方式应用于其他操作系统。
假定为Squish源代码包已解压到目录 SQUISHSRC
中。主版本号应该与您安装的Squish相同。
首先创建一个shell环境,该环境首先可以在您的 PATH
中找到正确的编译器以及AUT版本的Qt的 qmake
。这样,您就无需向 configure
指定 --with-qmake=
。从该shell中输入 qmake --version
以验证其正确性。
$ qmake --version QMake version 3.1 Using Qt version 6.6.3 in /usr/local/Qt/6.6.3/gcc_64/lib
进入 SQUISHSRC
,在该目录下创建一个 SQUISHBUILD
目录,然后进入该目录,并运行配置脚本
$ ../configure --disable-all --enable-idl --enable-qt --enable-server
SQUISHBUILD> ..\configure --disable-all --enable-idl --enable-qt --enable-server
在 configure
完成后,开始构建过程
$ ./build
SQUISHBUILD> build
如果遇到问题,请参阅解决构建错误。
安装到SQUISHDIR
如果不是以管理员身份运行或在SQUISHDIR上给予您写入权限,那么此步骤在Windows上可能会失败。
安装之前,进入 SQUISHDIR 并准备安装。
$ rm -r lib/extensions/qt $ rm lib/libsquishqt* $ cp etc/paths.ini etc/paths.ini.bak
SQUISHDIR> copy etc\paths.ini etc\paths.ini.bak SQUISHDIR> rd /q /s lib\extensions\qt SQUISHDIR> del /q bin\winhook.dll bin\squishqt*.dll
然后,进入 SQUISHBUILD
并执行以下安装命令。
$ ./build install DESTDIR=SQUISHDIR
SQUISHBUILD> build install DESTDIR=SQUISHDIR
最后,我们回到 SQUISHDIR 并恢复 etc/paths.ini
。
$ mv etc/paths.ini.bak etc/paths.ini
SQUISHDIR> move /Y etc\paths.ini.bak etc\paths.ini
修改后的Squish二进制包应该准备好与您的应用程序一起使用。
详细安装说明
本节更详细地描述了如何使用其他配置执行Squish的构建和安装。
构建SquishRunner的必备条件
根据配置,必须满足不同的要求。与AUT二进制兼容的组件必须使用Qt的正确版本。如果您正在构建squishrunner
,将出现与您想使用的脚本语言相关的一组要求。Squish自带内置的JavaScript解释器,因此不依赖于第三方JS解释器。但是,
- Qt必须配置并构建为共享库。
- 要使用Python作为测试脚本的语言,您必须安装Python 2.7+或Python 3.8+,同时包含开发头文件。
- 要使用Perl作为测试脚本的语言,您必须安装Perl 5.18或任何更高版本的5.x版本。
- 要使用Ruby作为测试脚本的语言,您必须安装Ruby 1.9。
- 要使用Tcl作为测试脚本的语言,您必须安装Tcl 8.4或更高版本。
在构建squishrunner
之前,您必须确保已经安装了您为测试脚本所选择的语言。这不包括Squish内置的JavaScript。
有关您需要安装的内容以及从何处获取它,请参阅以下表格,以了解您的平台和脚本语言。
语言 | 建议 |
---|---|
Python | Python解释器可执行文件必须在PATH 中。大多数Unix系统已预装Python,但如果没有,可以从系统的软件包管理工具中获取该软件包,或者您可以从https://www.pythonlang.cn/download/下载版本。如果您安装软件包,您必须安装-dev 或-devel 版本,因为Squish在构建时需要访问头文件。 |
Perl | Perl解释器可执行文件必须在PATH 中,除非您使用--with-perl 配置开关指定其位置。大多数Unix系统已预装Perl,但如果没有,可以从系统的软件包管理工具中获取该软件包,或者您可以从http://www.activestate.com/activeperl/downloads/下载版本。如果您安装软件包,您必须安装-dev 或-devel 版本,因为Squish在构建时需要访问头文件。 |
Ruby | Ruby解释器可执行文件必须在PATH 中,除非您使用--with-ruby 配置开关指定其位置。大多数Unix系统已预装Ruby,但如果没有(或版本太旧),可以从系统的软件包管理工具中获取该软件包,或者您可以从https://www.ruby-lang.org.cn/en/downloads/下载版本。如果您安装软件包,您必须安装-dev 或-devel 版本,因为Squish在构建时需要访问头文件。 |
Tcl | 大多数Unix系统已安装Tcl,但如果没有,可以从系统的软件包管理工具中获取该软件包,或者您可以从http://www_activestate.com/activetcl/downloads下载版本。如果您安装软件包,您必须安装-dev 或-devel 版本,因为Squish在构建时需要访问头文件。 |
语言 | 建议 |
---|---|
Python | 我们建议安装从https://www.pythonlang.cn/download/可用的最新Python 3软件包。 |
Perl | 我们建议安装ActiveState的Perl软件包。您可以从http://www.activestate.com/activeperl/downloads/下载它。 |
Ruby | Ruby的官方安装页面为https://www.ruby-lang.org.cn/en/downloads/。大多数Linux发行版都将它作为标准软件包。 |
Tcl | 我们推荐安装ActiveState的Tcl构建版本。您可以从http://www.activestate.com/activetcl/downloads/下载。 |
语言 | 建议 |
---|---|
Python | macOS自带Python版本——包括头文件,满足Squish的需求。 |
Perl | macOS自带Perl版本——包括头文件,应该足够满足Squish的需求。 |
Ruby | 撰写本文时,macOS预装的是Ruby 1.8版本,这太老了。要在macOS上使用Ruby,必须构建并安装Ruby 1.9。 |
Tcl | macOS自带Tcl版本——包括头文件,满足Squish的需求。 |
要测试嵌入式Qt应用程序,请参阅从嵌入式源代码包中安装Squish for Qt。
如果您想将JavaScript用作测试脚本的语言,则无需额外要求:Squish已内置JavaScript解释器。默认情况下,JavaScript解释器会自动构建,除非使用configure程序的--disable-js
开关禁用JavaScript支持;请参阅Configure开关。
配置开关
当调用时,configure会尝试自动检测您的系统配置系统和Squish的优化配置。在某些情况下,自动检测的结果或Squish使用的默认值可能不符合您的期望。在这些情况下,可以通过向configure传递各种命令行选项来覆盖检测到的默认设置。
这里有一些示例
--with-qmake=C:\Qt\6.6.3\msvc2019_64\bin\qmake.exe | 告诉configure工具的位置,为Squish提供有关您的Qt安装的必要信息。如果正确地首先在您的PATH 中找到qmake ,则此操作为可选。 |
--with-squishidl=/Applications/Squish_for_Qt/bin/squishidl | 告诉configuresquishidl 可执行文件的位置。当构建Squish for Qt6时,这不是可选的。通常,我们需要Squish的安装版本来构建Squish,如部分构建中所述。 |
要查看完整列表,请在命令行中执行configure --help
或参阅configure。
部分构建
默认情况下,configure
构建它找到的所有组件。
您可以通过为configure设置特定的命令行开关来做部分构建,这些开关可以用来排除或包含各种Squish组件。
Squish可以通过使用--enable-
component来告知构建特定的组件(如果它能够找到它),用要构建组件的名称替换component。类似地,Squish可以被告知不构建特定的组件,使用--disable-
component并再次用不希望Squish构建的组件名称替换component。在这种情况下,您可以使用尽可能多的启用和禁用命令行开关。以下列出可以选择启用或禁用的组件。
--disable-all | 使用此选项禁用所有Squish组件。客户应禁用此选项以获取最小构建,然后启用所需的组件。 |
--enable-qt | 我们正在为自定义Qt构建Squish。启用此开关。 |
--enable-server | squishserver 应用程序(用于控制AUT)。启用此开关。 |
--disable-runner | 除非出于某种奇怪的原因需要针对自定义脚本引擎构建squishrunner ,否则您可以使用二进制安装版本的安装版本。禁用此开关。 |
--disable-python3 | Python 3 解释器。除非您正在构建 squishrunner ,否则不需要启用此功能。 |
--enable-32bit | 如果启用,将强制进行 32 位构建(如果工具链支持)。 |
--enable-pure-qt4 | 如果启用,告诉 Squish 在测试 Qt 4 应用程序时不要使用 Qt 3 支持。在很多情况下,当旧版本无法自动检测到 Qt3Support 时,Squish 可以自动检测到 AUT 中的 Qt3Support 的缺失。现在,此选项仅在 Qt 安装程序包含 Qt3Support 但没有与 AUT 一起分发时才需要。 |
--enable-qtdebug-libs | 使用 Qt 调试库构建 Squish。如果您的 AUT 是针对 Qt 的调试版本构建的,则需要此选项。调试库的文件名不同。 |
--disable-java | Java 测试(顾客不应有构建 Squish 用于 Java 或其他版本/工具包的理由)。不要启用。 |
您可以在内部依赖性的约束范围内自由组合这些开关。这正是 all
组件很有用之处。
../configure --disable-all --enable-qt --enable-server
此操作禁用除服务器和 Qt 包装器之外的所有组件。基本上,这构建了所有与 AUT 必须二进制兼容的组件。
覆盖构建变量
当运行 configure 时,它会将其创建的配置输出到文件 config.h
和 Build.conf
中——基于它自动检测到的组件,但尊重任何了我们用来覆盖自动检测的命令行开关。
config.h
文件包含在 Squish 的源代码文件中,而 Build.conf
文件用作构建工具的输入文件。如果自动检测产生了不满意的结果,您可以在运行构建应用程序之前修改这些文件。写入 Build.conf
的变量可以很容易地更改,而无需手动编辑文件。这可以通过在 configure 命令行中指定 VARIABLE=value
或 VARIABLE+=value
的形式来实现。这些参数将替换(如果使用 =
)或扩展(如果使用 +=
)命名变量。
以下是一个示例,该示例将变量的值替换为新值;在这种情况下,更改默认的优化标志
configure "CXXOPT=-O1"
另一个示例,在这种情况下,我们扩展了两个变量的存储值——此操作的效果是更改 gcc
编译器的默认操作模式,强制其在 64 位系统上进行 32 位构建
configure "CXXFLAGS+=-m32" "LFLAGS+=-m32"
如何配置不同的编译器
configure 脚本将在您的 PATH
中搜索 C++ 编译器、Squish 依赖的 Qt 库、Squish 支持的第三方脚本语言(Python、Perl、Ruby 和 Tcl)的解释器和头文件,以及 Squish 可能需要的其他系统组件,例如 Java 运行环境。输出指示已检测到哪个编译器。如果您在测试 Qt 应用程序,应使用用于构建 AUT 的相同编译器来构建 Squish。
如果您想强制 configure 使用它检测到的不同编译器,请设置 CXX
环境变量为 Squish 要使用的编译器的可执行文件,以下示例说明了这一点。
如果 configure 在您的 PATH 中检测到了 g++,但您想使用较旧的 g++-9,则按如下运行 configure
$ CXX=g++-9 ../configure
如果 configure 检测到 MSVC++,但您想使用 Intel C++,则按如下运行 configure
SQUISHBUILD> set CXX=icl SQUISHBUILD> ..\configure
接下来,运行 Squish build
工具来编译 Squish。
$ ./build
SQUISHBUILD> build
构建 Squish 可能需要相当长的时间,因为在这个过程中,构建工具还会为 Qt 库创建包装器。
静态链接的 Qt 库
使用静态链接的 Qt 库构建的应用程序可以记录和运行测试。以下是要求总结
- 必须正确安装 Qt 的正确版本/静态构建版本。
- Squish 源包必须解压,使用正确选项进行配置,并针对静态 Qt 库进行构建。
- 您的 AUT 必须被配置以使用内置钩子。
- 对于
squishidl
、squishserver
、squishide
和squishrunner
,您将使用与源包版本号匹配的 Squish 二进制包。 squishserver
必须被配置以便为 AUT 设置usesBuiltinHook
。
AUT 仪器化
有关如何扩展您的 AUT 构建规则和(如果需要)代码以使静态链接的 Qt 应用程序能够与先前构建的包一起工作的说明,请参阅使用 Qt 内置钩子。
最后创建一个新的测试套件并使用适当的设置,选择新配置的 AUT 二进制文件作为测试应用。
现在您应该能够启动 AUT 并记录和重播测试。
©2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。
此处提供的文档受 GNU 自由文档许可协议版本 1.3 的条款约束,该协议由自由软件基金会发布。
Qt 及 respective 图标是芬兰的 Qt 公司和/或在其他国家的商标。所有其他商标均为其各自所有者的财产。