首页 > 解决方案 > Appveyor - 编译静态 qt5.10 应用程序(带有 openssl 和 qml webview)

问题描述

我正在尝试在我的 Qt 项目上设置 autobuild appveyor。我的应用程序使用 qt5.10.1,具有 qml 和 openSSL 功能。

我迷路了......我不知道从哪里开始:/

# 1: 我找到了一些 .apveyor.yml 配置文件的例子,但是它们都使用了 mingw32 编译器,它不允许我使用 qml webview 模块(为什么)......我没有找到我必须在我的使用 msv2017 编译我的应用程序的 appveyor 配置文件编译器在哪里?

实际上,我的 appveyor.yml 看起来像那样(我尝试像 QtCreator 在我的本地计算机上所做的那样,但它不起作用)

image: Visual Studio 2017
branches:
  only:
    - master

install:
  - set QTDIR=C:\Qt\5.10.1\msvc2017_64
  - set PATH=%QTDIR%\bin;C:\Qt\Tools\mingw530_32\bin;%PATH%;

build_script:
  - qmake app/QRegovar.pro -spec win32-msvc
  - qmake_all
  - C:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Release

deploy:
  - provider: GitHub
    artifact: C:/projects/qregovar
    draft: true
    prerelease: false
    on:
      branch: master
      appveyor_repo_tag: true 

它失败并出现以下错误:

Build started
git clone -q --branch=master https://github.com/REGOVAR/QRegovar.git C:\projects\qregovar
git checkout -qf 7357eb2adab349c4de9e0b346dc99027964ea5a5
Running Install scripts
set QTDIR=C:\Qt\5.10.1\msvc2017_64
set PATH=%QTDIR%\bin;C:\Qt\Tools\mingw530_32\bin;%PATH%;
qmake app/QRegovar.pro -spec win32-msvc
Project ERROR: Cannot run compiler 'cl'. Output:
===================
===================
Maybe you forgot to setup the environment?
Command exited with code 3

# 2: 我也想知道 appveyor 是否使用 qt static build ?因为我想为用户创建“准备使用”包?

标签: qtstaticqt5appveyor

解决方案


我正在使用 CMake,但我想诀窍是将 'cl' 编译器设置到 PATH 中,以便 qmake 能够找到它。

在示例 appveyor 脚本中,主要的构建脚本是 '.\qtmodules-travis\ci\win\build.bat'。此脚本将检查/使用 AppVeyor 矩阵定义的平台变量(第 7 行以上),然后脚本定义 VC_DIR 等。

最后是调用你'build-msvc.bat'引用的脚本,其中被调用:

call %VC_DIR% %VC_VARSALL% || exit /B 1

QtCreator 将为您进行设置(您正在使用工具包...)

当您在干净的命令行中构建时,您应该在调用 'qmake' 之前调用自己的 'vcvarsXXX.bat。

在我看来,AppVeyor 不会为您触发此调用,因为开发人员可能希望使用不同的构建环境。设置(例如 x86、x64、arm 等)。这是你的选择。实际上,当您从开始菜单在 PC 上启动“Qt 命令行”时,这也是提示(它调用“C:\Qt\5.11.0\msvc2017_64\bit\qtenv2.bat”shell 设置脚本)


推荐阅读