QT项目在GitLab CI中编译生成可执行文件时遇到的一些问题,麻烦帮忙看一下,谢谢。
.gitlab-ci.yml的配置如下
stages:
- build
build_job:
stage: build
tags:
- test-runner
script:
- qmake jiazaicesi.pro -spec win32-msvc "CONFIG+=qtquickcompiler"
- nmake.exe
artifacts:
paths:
- release/jiazaicesi.exe
在执行的过程中遇到的问题,主要的问题就是一直在报无法打开头文件和库文件。同样的项目代码在QT上一直是可以正常构建生成可执行文件并运行。但通过GitLab CI编译时一直有问题。因为gitlab-runner.exe在当前电脑上搭建,环境都是用的一台电脑,不知道哪里出了问题,后来在命令提示符中运行 qmake jiazaicesi.pro -spec win32-msvc "CONFIG+=qtquickcompiler"和nmake.exe 命令报出的错误都是一样的。
在百度上查到以vs为例,使用vs创建的工程,会自动添加一些引用路径,比如vs创建的一个工程,在项目的属性页面:
“包含路径”也就是include的路径,该工程如下
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\Include\um
“库目录”是寻找lib的目录
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\lib\x86
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\atlmfc\lib\x86
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\VS\lib\x86
C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x86
C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\um\x86
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x86
不知道QT是不是也自动在编译时添加了一些引用路径,但在命令行执行时缺少这些路径,从而导致报错。我通过将QT生成的Makefile.release和命令提示符中执行qmake 命令生成的Makefile.release进行对比发现缺少了一些头文件路径。原来以为nmake生成的过程出了问题,但以这样的情况来看好像时qmake编译的时候出的问题
下面是报错信息
问题一:
这个问题我把.rc文件去了。就不在报了。在解决了问题二、问题三后,想用同样的方法解决这个问题,但添加了并未解决,在引用Windows.h使用了全路径,但是又会报出找不到Windows.h里引用的头文件
问题二:
将上边提到的缺少的头文件路径在.pro添加解决了这个问题
INCLUDEPATH += \
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/ATLMFC/include" \
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/include" \
"C:/Program Files (x86)/Windows Kits/NETFXSDK/4.8/include/um" \
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/ucrt" \
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared" \
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um" \
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/winrt" \
"C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/cppwinrt"
问题三:
报错无法打开库文件,也是在.pro文件中添加路径解决了这个问题。
LIBS += -lshell32 -lmsvcprt -lucrt
LIBPATH += \
"C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/um/x64" \
"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/lib/x64/uwp" \
"C:/Program Files (x86)/Windows Kits/10/Lib/10.0.19041.0/ucrt/x64"
虽然通过这样的方式解决了问题,但是过于繁琐,感觉并没有从根本解决这个问题,让人干到抓耳挠腮。后来有了解到vcvarsall.bat,在命令提示符里执行了,有将.pro文件里手动添加的路径删除后,发现并没有解决问题,非常感谢您能看到这里,如果您有好的建议,欢迎您留言评论。