我的项目是在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"
型
1条答案
按热度按时间wi3ka0sx1#
IIRC,你需要在构建步骤之前设置
QTDIR
和QtToolsPath
env变量。你可以使用QT_ROOT_DIR
在单独的步骤中设置这些变量(参见下面的Bash示例):字符串
其中,
QT_ROOT_DIR
表示Qt安装目录。有关
QT_ROOT_DIR
的详细信息,请参阅jurplel/install-qt-action
的dir
输入参数。根据您的应用程序,您可能需要配置
modules
输入参数来安装默认情况下未安装的Qt模块。除此之外,您可能希望启用缓存以加快工作流运行,即
cache: true
。有关详细信息,请参阅cache
输入参数。