c++ 如何在Github中构建Qt/MSbuild项目

iq3niunx  于 11个月前  发布在  Git
关注(0)|答案(1)|浏览(142)

我的项目是在Windows环境下用Qt C++开发的。我想通过使用msbuild和windeployqt来构建Github操作。
这是我的示例yml脚本

name: MSBuild

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

env:
  # Path to the solution file relative to the root of the project.
  SOLUTION_FILE_PATH: ..
  QT_VERSION:   6.4.3

  # Configuration type to build.
  # You can convert this to a build matrix if you need coverage of multiple configuration types.
  # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
  BUILD_CONFIGURATION: Release

permissions:
  contents: read

jobs:
  build:
   runs-on: windows-latest

steps:
- name: (1) Checkout repo
  uses: actions/checkout@v3

- name: (2) Install Qt
  uses: jurplel/install-qt-action@v3
  with:
    version:      ${{ env.QT_VERSION }}
    host:         windows
    target:       desktop
    arch:         win64_msvc2019_64
    dir:          ${{ runner.temp }}
    setup-python: false 
    
- name: (4) Add MSBuild to PATH
  uses: microsoft/setup-[email protected]

- name: Create build folder
  run: mkdir -p ${{ runner.temp }}\build

- name: (5) Build with msbuild
  working-directory: ${{ runner.temp }}\build
  run: echo "Start building in ${{ runner.temp }}\build"
       cd ${{ runner.temp }}\build
       msbuild /m /p:Configuration=${{ env.BUILD_CONFIGURATION }} ${{ github.workspace }}\xxx.sln

- name: (6) List contents of the build directory
  run: |
    ls -R ${{ runner.temp }}\build
    
#- name: (6) Deploy with windeployqt
#  working-directory: ${{ runner.temp }}
#  run: |
#    mkdir ${{ env.DEPLOY_DIR }}
#    windeployqt --dir ${{ env.DEPLOY_DIR }} ${{ env.SOLUTION_FILE_PATH }}/path/to/my/exe

字符串
但是在第5步和第6步之后,什么都没有发生。甚至没有任何错误消息,我可以检查源代码是否正确构建。
有人能教我如何用MSBuild和WinDeployqt构建它吗?
谢谢你,谢谢

**更新:**语法错误修复后:

- name: (2) Install Qt
  uses: jurplel/install-qt-action@v3
  with:
    version:      ${{ env.QT_VERSION }}
    host:         windows
    target:       desktop
    arch:         win64_msvc2019_64
    dir:          ${{ runner.temp }}
    setup-python: false 
    
- name: Print Qt version information
  run: |
    qmake -v
    
- name: (3) Add MSBuild to PATH
  uses: microsoft/[email protected]

- name: (4) Create build folder
  run: |
       mkdir -p ${{ runner.temp }}\build

- name: (5) Set Qt Environment Variables
  run: |
    echo "Setting Qt Environment Variables"
       echo "QTDIR=${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/msvc2019_64" >> $GITHUB_ENV
       echo "QtToolsPath=${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/msvc2019_64/bin" >> $GITHUB_ENV
  shell: bash

- name: (6) Build with msbuild
  working-directory: ${{ github.workspace }}
  run: |
       echo "Current directory: $($PWD.Path)"
       msbuild /p:Configuration=${{ env.BUILD_CONFIGURATION }} /p:OutDir=${{ runner.temp }}\build\ "${{ env.SOLUTION_FILE_PATH }}\QtStockV3.sln"


x1c 0d1x的数据

**更新2:**Q:如何在github action中包含path?

在下面的“设置Qt环境变量和路径”一节中,我设置了几个包含我的头文件的包含路径。
但是根据错误信息,它没有找到头文件?
在我解决了所有这些问题之后,我将在这里提供一个完整的示例。感谢您的帮助!


- name: (5) Install Vcpkg and cURL 
  working-directory: ${{ runner.temp }}
  run: |
    git clone https://github.com/microsoft/vcpkg.git
    cd vcpkg
    .\bootstrap-vcpkg.bat
    .\vcpkg install curl
    curl --version

- name: Set Qt Environment Variables and path
  run: |
       echo "QTDIR=${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/msvc2019_64" >> $GITHUB_ENV
       echo "QtToolsPath=${{ runner.temp }}/Qt/${{ env.QT_VERSION }}/msvc2019_64/bin" >> $GITHUB_ENV
       echo "INCLUDE_PATH_1=${{ github.workspace }}/${{ env.PROJ_NAME }}/src/header" >> $GITHUB_PATH
       echo "INCLUDE_PATH_2=${{ github.workspace }}/${{ env.PROJ_NAME }}/src/parser" >> $GITHUB_PATH
       echo "INCLUDE_PATH_3=${{ github.workspace }}/${{ env.PROJ_NAME }}/src/cc" >> $GITHUB_PATH
       echo "INCLUDE_PATH_VCPKG=${{ runner.temp }}/vcpkg/installed/x64-windows/include" >> $GITHUB_PATH
       ls ${INCLUDE_PATH_1}
       ls ${INCLUDE_PATH_2}
       ls ${INCLUDE_PATH_3}
  shell: bash

    
- name: (7) Build with msbuild
  working-directory: ${{ github.workspace }}
  run: |
       echo "Current directory: $($PWD.Path)"
       msbuild /p:Configuration=${{ env.BUILD_CONFIGURATION }} /p:OutDir=${{ runner.temp }}\build\ "${{ env.SOLUTION_FILE_PATH }}\QtStockV3.sln"

wi3ka0sx

wi3ka0sx1#

IIRC,你需要在构建步骤之前设置QTDIRQtToolsPath env变量。你可以使用QT_ROOT_DIR在单独的步骤中设置这些变量(参见下面的Bash示例):

- name: Set QTDIR and QtToolsPath
  shell: bash
  run: |
    echo "QTDIR=$QT_ROOT_DIR" >> "$GITHUB_ENV"
    echo "QtToolsPath=$QT_ROOT_DIR/bin" >> "$GITHUB_ENV"

- name: Build
  run: ...

字符串
其中,QT_ROOT_DIR表示Qt安装目录。
有关QT_ROOT_DIR的详细信息,请参阅jurplel/install-qt-actiondir输入参数。
根据您的应用程序,您可能需要配置modules输入参数来安装默认情况下未安装的Qt模块。
除此之外,您可能希望启用缓存以加快工作流运行,即cache: true。有关详细信息,请参阅cache输入参数。

相关问题