Qt构建及编译出错问题及解决方案

整个一下午都在为Qt中出现的构建及编译问题而纠结,终于发现了问题所在,故记录下来并阐述解决方法。

 

问题描述:

当笔者运行qtNetTest的qt widget项目时,一直报错:


Running steps for project qtNetTest...

Could not start process "F:\Qt_5.3\5.3\mingw482_32\bin\qmake.exe"

C:\ProjectFolder\qt_projects\qtNetTest\qtNetTest.pro -r -spec win32-g++

"CONFIG+=debug"

Error while building/deploying project qtNetTest (kit: Desktop Qt 5.3.0 MinGW 32bit)

When executing step 'qmake'

Elapsed time: 00:00.

 

问题剖析及解决方案:

刚开始,笔者一直以为是项目文件路径存在中文字符,当仔细思考及验证后,发现中文项目路径一般的报错信息为:


Running steps for project qtNetTest...

Starting process "F:\Qt_5.3\5.3\mingw482_32\bin\qmake.exe" 

C:\程序\qt_projects\qtNetTest\qtNetTest.pro -r -spec win32-g++ 

"CONFIG+=debug"

Cannot find file : C:\程序\qt_projects\qtNetTest\qtNetTest.pro

Error while building/deploying project qtNetTest (kit: Desktop Qt 5.3.0 MinGW 32bit)

When executing step 'qmake'

Elapsed time: 00:00.

此种情况的报错与笔者所遇到的问题的不同就在于后者的报错信息中出现了”Cannot find file”信息,此种信息表示qmake程序无法找到.pro文件,导致此错误的原因即在于项目文件路径中有中文,而qmake无法识别中文(字符编码集的不同,当然通过修改qt的字符编码集是可以实现识别中文的),从而导致错误发生。

对于自己所遇到的报错问题,笔者发现错误发生的关键在于build directory(构建目录)的设定。

在发生错误时,

 

而正确的情况下,应该为:

 

我们需要将构建目录设置为项目文件夹所在目录。

当然,这里,对于构建目录还有两点说明(这两种情况下,程序均可以顺利通过构建和编译):

1、qmake不支持构建目录在源文件目录之下(不建议使用此种方法):

 

2、Shadow build(隐式构建):上面所述情况皆为隐式构建。

 ***显式构建,构建目录与工程目录相同(个人比较推荐此种构建方式,因为文件组织更加有条理,更加易于管理)。

 

小结

对于遇到的此问题,个人究其原因在于:当改变qt的工作目录时,由于文件是移动的过程,对于项目运行环境的文件改变并未随着文件移动而改变,因此,我们在移动项目文件夹后应该重新检查项目的构建和运行环境。当然,对于中文路径,依旧需要留意。

 

 

时间: 2024-10-30 13:43:35

Qt构建及编译出错问题及解决方案的相关文章

qt5-新装的QT5.5构建时一直出错

问题描述 新装的QT5.5构建时一直出错 在项目-构建环境哪里,勾选了清除系统环境变量,只使用QT的环境变量,然后QT项目就可以构建了,但非QT项目还是出现原来的错误== 解决方案 指针异常.看上去是环境配置有问题

编译器-菜鸟求指教,qt creator 在编译时出现的问题

问题描述 菜鸟求指教,qt creator 在编译时出现的问题 我安装QT5.4.1后用qt creator 在构建套件时编译器一栏呈灰色,不能配置,请问这是什么原因 解决方案 没有打开工程的情况下,那里就是灰色的 解决方案二: 工程文件是.pro的文件对吧,我打开了这个文件也么有用啊

chromium nacl编译出错

问题描述 chromium nacl编译出错 FAILED: Command '........outDebuggensdkwin_x86pnacl_newlibbinpnacl-ar @c:usersadmini~1.??appdatalocaltemptmpz8nl6n' returned non-zero exit stat us 1 [4/14478] ACTION nacl_lib_newlib: buil... plib_3ee1b6ebff4793d51aee0961182f8cb

JAVA代码编译出错:找不到符号,求解答

问题描述 JAVA代码编译出错:找不到符号,求解答 源代码: package com.tarena.shoot; import java.util.Random; //Airplane----敌机既是飞行物, public class Airplane extends FlyingObject implements Enemy{ private int speed = 2;//敌机走步的步数 public Airplane(){ image = ShootGame.airplane; width

java特殊符号的输入后编译出错

问题描述 java特殊符号的输入后编译出错 java编写代码每次到特殊符号如|都编译不出来 求大神教教我 解决方案 已自行解决 Java 双竖线按住shift加""""就行了 || 解决方案二: 在java中,||为或符号,为一种特殊字符,所以在字符串中需要在前面加上转义字符"".

如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错。

问题描述 如果子类的构造方法中既没有显示调用基类构造方法,而基类中又没有无参数的构造方法,则编译出错. class Person { private String name; private int age; public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } public String getName(){ return name; } pu

openssl编译出错,真心快崩溃了。。。求解答

问题描述 openssl编译出错,真心快崩溃了...求解答 如题,小弟今天编译的openssl-0.9.8zg,在执行nmake -f msntdll.mak后,总是出现以下错误 -c .cryptoecec_asn1.c ec_asn1.c .cryptoecec_asn1.c(264) : error C2370: "ECPKPARAMETERS_it": 重定义:不同的 存储类 .cryptoecec_asn1.c(262) : 参见"ECPKPARAMETERS_it

mod tile-mod_tile编译出错 -std=c++11 or -std=gnu++11

问题描述 mod_tile编译出错 -std=c++11 or -std=gnu++11 make[1]: 正在进入目录 /home/wml/src/mod_tile-master' depbase=echo src/gen_tile.o | sed 's|[^/]*$|.deps/&|;s|.o$||'`; g++ -DHAVE_CONFIG_H -I. -I./includes -I/usr/include/freetype2 -pthread -I/usr/local/include -I

c++ primer-C++ primer第五版例子编译出错

问题描述 C++ primer第五版例子编译出错 请教,中文第五版p190页的例子编译出错,不知道错哪里了,求大神指正,感激不尽. 错误提示:expected unqualified-id before ')' token 代码如下: include include using namespace std; string::size_type() find_char(const string &s, char c, string::size_type() &occurs) { auto r