6410学习笔记之029_备忘专属编译他人的QT4项目提示qmake出错解决方法
- 格式:doc
- 大小:190.00 KB
- 文档页数:2
unexpected result of qmake query -回复关于qmake查询的意外结果,我以中括号内的内容为主题来撰写一篇1500-2000字的文章,一步一步地解答问题。
QMake是一个为Qt项目生成Makefile的工具。
它能够自动生成适应不同平台和编译器的Makefile,使得项目的构建变得更加简便。
然而,在使用QMake进行查询时,有时候可能会得到一些令人意外的结果。
接下来,我将为你详细解释一些可能导致意外结果的原因,并提供解决方案。
首先,一个常见的意外结果可能是在查询过程中出现错误。
这种情况通常是由于代码中存在错误导致的。
首先,我们需要仔细检查代码是否存在语法错误或逻辑错误。
如果代码没有显而易见的错误,我们可以尝试去除一些无关代码、注释或宏定义,以简化查询过程。
此外,确保代码库中包含所有必要的库和依赖项也是很重要的。
如果我们确定代码本身没有问题,下一步需要检查的是我们的查询命令是否正确。
QMake有许多不同的命令和选项可供使用,因此务必确保我们使用的是正确的命令和选项组合。
例如,如果我们想查询项目中所有的源文件,我们可以使用命令`qmake -query QT_SOURCE_TREE`来获取Qt 源代码树的路径。
如果我们使用的是错误的命令或选项,则可能导致意外结果的出现。
另一个可能导致意外结果的原因是配置文件的问题。
QMake使用一个名为.pro的配置文件来指定项目的构建规则。
在.pro文件中,我们可以定义项目的源文件、包含的库以及编译选项等。
如果我们的配置文件中存在错误或不完整的信息,则可能导致查询时获取不到期望的结果。
因此,确保我们的配置文件正确无误是很重要的。
此外,QMake还提供了一些高级功能,如使用条件语句、变量和函数等。
如果我们在查询过程中使用了这些高级功能,也可能导致意外结果的出现。
在这种情况下,我们需要仔细检查这些功能的使用方式是否正确,并确保它们按照预期工作。
目录1.写这篇文档的目的 (1)2.什么是框架? (1)3.关于Qt (1)4.本文档说明的范围 (2)5.Qt的下载官网 (2)5.1 Qt4的32位二进制文件的下载 (2)6.Qt4编程的简单介绍 (4)6.1 设置环境变量 (4)6.2编程、生成工程文件并编译运行 (5)6.2.1编写“著名的”hello程序 (5)6.2.2生成工程文件并编译 (7)6.3编译运行程序 (9)6.3.1 Debug和Release的区别是什么? (11)7.qmake (11)7.1 qmake命令为我们做了什么? (11)7.1.1认识开源框架的文件架构 (12)7.1.2 qmake命令生成的VC++工程文件 (13)7.2 项目文件(.pro) (21)7.2.1 pri文件和prf文件 (22)8. cmake (23)8.1关于CMakeList.txt (30)9. Qt Creator和Visual Studio Add-in for Qt4的使用(选看) (30)9.1 Qt Creator (30)9.2 Visual Studio Add-in for Qt4(VS2010的Qt4插件) (36)10. Qt Jambi(选看) (38)1.写这篇文档的目的之所以写这篇文档,是因为我们做项目或研究IT技术的时候,会用到别人的开源框架(当然也可以自己原创一个框架,但是由于现在国内对于知识产权的氛围并不好,或者高端技术只是集中在少数人手中,所以搞这个的人不多),而别人的开源框架可能会用到Qt,或者qmake、cmake。
这时我们就会有中途被卡住的感觉,因为出现了一个新的不懂的工具,顿时觉得困难重重。
如果要看一本Qt的书的话又觉得篇幅太大,因为有时我们只是想着先把这个开源框架安装(编译)了再算,完成第一步先,以后再看书还不迟,这样的话只要对Qt有一个大概的了解即可,就不用再慢慢把Qt的书看完了,这样既打乱了计划,又耗费了时间。
VC中常见的一些编译链接错误的解决VC中常见的一些编译链接错误的解决2010-03-22 15:59问题1:Linking...nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexlibcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main答VC++默认的工程设置是单线程的,而你使用了多线程,所以要修改设置。
选择菜单“Project|settings”,选择C/C++标签,在CODEGENERATION分类中选择除SINGLE-THREADED的其他选择。
比如可以在Use run-time library中选择Debug Multithreaded 或者multithreaded其中,Single-Threaded 单线程静态链接库(release版本) Multithreaded 多线程静态链接库(release版本) multithreaded DLL 多线程动态链接库(release版本)Debug Single-Threaded 单线程静态链接库(debug版本)Debug Multithreaded 多线程静态链接库(debug版本)Debug Multithreaded DLL 多线程动态链接库(debug版本)单线程: 不需要多线程调用时, 多用在DOS环境下多线程: 可以并发运行静态库: 直接将库与程序Link, 可以脱离MFC库运行动态库: 需要相应的DLL动态库, 程序才能运行release版本: 正式发布时使用debug版本: 调试阶段使用问题2fatal error C1010: unexpected end of file while looking for precompiled header directive该如何解如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiledheaders。
编译make的出错提⽰解决⽅案编译出错笔记:start.s:20: Error: no such instruction: `ldr r0,=WTCON'错误:没有这样的指令解决:编译⽂件后缀名必须为⼤写S,改为start.Sstart.S:34: Error: bad instruction `ldr,r0,=0x4C000004'错误:坏的指令,指令名ldr后⾯不能跟逗号解决:改为ldr r0,=0x4C000004start.S:52: Error: bad expression -- `ldr r0,#0'错误:指令参数出错,使⽤#0参数是使⽤mov,不是ldr解决:改为mov r0,#0start.o(.text+0xc8): In function `SDRAM_CONFIG': : undefined reference to `lr'错误:在start.S中对LR未定义的引⽤解决:在start.S中找到 ldr pc,=lr ,编译器误解lr是⼀个变量,这⾥应该写成mov pc,lr(完成⼀个⼦程序返回)12: error: syntax error before "int"错误:'int'符号之前有语法错误13: warning: comparison of distinct pointer types lacks a cast错误:指针与其它不同类型的值⽐较,没有使⽤强制转换解决:使⽤强制转换使两个变量改为相同类型comparison: ⽐较distinct pointer types: 不同的类型指针a cast:强制转换19: warning: conflicting types for built-in function 'strcpy'错误:strcpy函数与内置函数库冲突,(⽐如:printf,strlen,puts,scanf等都是内置函数库)解决: 1.在arm-linux-gcc编译命令后⾯加上-fno-builtin或者-fno-builtin-FUNCTION 选项,你就可以⾃⼰实现这些函数⽽不冲突了。
目录1.写这篇文档的目的 (1)2.什么是框架? (1)3.关于Qt (1)4.本文档说明的范围 (2)5.Qt的下载官网 (2)5.1 Qt4的32位二进制文件的下载 (2)6.Qt4编程的简单介绍 (4)6.1 设置环境变量 (4)6.2编程、生成工程文件并编译运行 (5)6.2.1编写“著名的”hello程序 (5)6.2.2生成工程文件并编译 (7)6.3编译运行程序 (9)6.3.1 Debug和Release的区别是什么? (11)7.qmake (11)7.1 qmake命令为我们做了什么? (11)7.1.1认识开源框架的文件架构 (12)7.1.2 qmake命令生成的VC++工程文件 (13)7.2 项目文件(.pro) (21)7.2.1 pri文件和prf文件 (22)8. cmake (23)8.1关于CMakeList.txt (30)9. Qt Creator和Visual Studio Add-in for Qt4的使用(选看) (30)9.1 Qt Creator (30)9.2 Visual Studio Add-in for Qt4(VS2010的Qt4插件) (36)10. Qt Jambi(选看) (38)1.写这篇文档的目的之所以写这篇文档,是因为我们做项目或研究IT技术的时候,会用到别人的开源框架(当然也可以自己原创一个框架,但是由于现在国内对于知识产权的氛围并不好,或者高端技术只是集中在少数人手中,所以搞这个的人不多),而别人的开源框架可能会用到Qt,或者qmake、cmake。
这时我们就会有中途被卡住的感觉,因为出现了一个新的不懂的工具,顿时觉得困难重重。
如果要看一本Qt的书的话又觉得篇幅太大,因为有时我们只是想着先把这个开源框架安装(编译)了再算,完成第一步先,以后再看书还不迟,这样的话只要对Qt有一个大概的了解即可,就不用再慢慢把Qt的书看完了,这样既打乱了计划,又耗费了时间。
Qmake配置⾃定义编译过程Qmake 配置⾃定义编译过程需求:动态更换资源⽂件在 Windows10 下编写 Qt 项⽬时,有这样的需求:程序⽤到的资源⽂件可以动态更换⽽不需要重新编译整个项⽬解决⽅案 0.1将所有的资源⽂件全部放到 qrc ⽂件中,由 Qt 负责管理资源⽂件。
但是这种⽅法在每次更改了 res 中的⽂件后都需要重新编译程序。
⽐较⿇烦。
新的需求于是需求变成了:将源代码⽬录下的res⽂件夹下的 xml ⽂件全部复制到编译好的程序同级⽬录下解决⽅案 1.0最初的解决⽅案是在 res ⽬录下编写⼀个批处理⽂件:update.bat,然后每次更新了 xml ⽂件后,⼿动执⾏这个批处理⽂件。
由于 xml ⽂件写好后基本上不需要怎么修改,所以写完代码后在⾃⼰的环境中运⾏起来没有问题,不会出现程序运⾏时找不到 xml ⽂件的情况。
该批处理⽂件的内容如下:mkdir ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Debug/debug/rescopy /y *.xml ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Debug/debug/resmkdir ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Release/realse/rescopy /y *.xml ../../build-DEMO-Desktop_Qt_5_6_3_MSVC2015_64bit-Release/realse/res思路是这样的:1. ⾸先创建相应的⽬录2. 将项⽬下⾯所有的 xml ⽂件复制到指定的⽬录在我的电脑环境中运⾏正常,但是问题很明显,如果我换了编译器,或者更换了构建⽬录,我就得去批处理⽂件中添加两⾏代码,⽽且还得把所有的⽂件复制到好⼏个⽬录下⾯。
⾮常⿇烦!我在把源代码拷给别⼈的时候,由于别⼈⽤的编译器是 MinGW 编译器,结果我的批处理⽂件没有办法直接使⽤。
Qt---⼀些常见问题处理(⽆法解析得外部符号,UI头⽂件找不到等)1.编译,出错,提⽰:mainwindowprivate.obj:-1: error: LNK2001: ⽆法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)从QObject继承了⼀个类:#ifndef MAINWINDOWPRIVATE_H#define MAINWINDOWPRIVATE_H#include "DockManager.h"class MainWindowPrivate : public QObject{Q_OBJECTpublic:MainWindowPrivate();virtual ~MainWindowPrivate();public:void initDockWidget(QWidget *widget);private:ads::CDockManager *DockManager;};#endif// MAINWINDOWPRIVATE_H编译,出错,提⽰:mainwindowprivate.obj:-1: error: LNK2001: ⽆法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)解决办法:编译出错是因为没有⽣成moc_mainwindowprivate.cpp⽂件造成的。
6410学习笔记之解决Windows下Arm下Linux下Qt4程序的中文乱码问题############################################################################### #操作系统:Win7垃圾版#QT: 4.8.1#操作系统:Winxp垃圾版#QT: 4.8.1#开发板:友善之臂Tiny6410 V1.2 #QT: 4.6.1#QTE-arm: 4.7.0#Write By Kinglate 20130806############################################################################### 也许这个世界上没有人会像我一样遇到一个问题了,解决了,很开心,同时也很伤心!跨平台编程相当苦逼,平台是夸了,但是问题的解决方案并非夸平台!相当头疼。
其他的不想多说,挑个最典型的(解决中午乱码问题)跟大家分享一下,好让大家今后能少走弯路!一、解决Windows下Qt4程序的中文乱码问题1.方法一(该方法对于我的win7机器行不通,但是我的xp机器却没有问题,神奇吧?所以对于您的机器可能行不行。
)在main.cpp中找到int main(int argc, char *argv[])这个入口函数,在其里面加入以下四行代码:2.在main.cpp中加入#include<QTextCodec>编码头文件,然后在int main(int argc, char *argv[])这个入口函数,在其里面加入以下一行代码:QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));3.(至于加到什么位置,在{}内,只要不加在return a.exec();这行代码的后面就可以了!)完成后如下图所示:4.需要使用中文的地方,还是举个例子讲解一下:QMessageBox::information(this, tr("连接完成"), tr("本地Ip为:" )+ localIpStr+tr("端口号为:")+localport, QMessageBox::Ok);测试结果:5.方法二(相当好用一步到位)在main.cpp中找到int main(int argc, char *argv[])这个入口函数,在其里面加入以下四行代码:QTextCodec *codec = QTextCodec::codecForLocale();//设置文本为GB2312编码QTextCodec::setCodecForTr(codec);//设置使用tr内的编码QTextCodec::setCodecForLocale(codec);//设置本地编码QTextCodec::setCodecForCStrings(codec);//设置字符串编码(至于加到什么位置,在{}内,只要不加在return a.exec();这行代码的后面就可以了!)完成后如下图所示:需要使用中文的地方,还是举个例子讲解一下:QMessageBox::information(this, tr("连接完成"), tr("本地Ip为:" )+ localIpStr+tr("端口号为:")+localport, QMessageBox::Ok);测试结果:二、解决Arm下Qt4程序的中文乱码问题方法一:本人以前常用的1.在.cpp(非main.cpp)中加入#include<QTextCodec> //Qt的字符编码头文件2.在每个需要用到中文的地方所在的函数体内设置中文字体编码,放在该函数体的第一句即可:QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8")); / /设置中文字体编码需要输入中文时要用tr("我是中文!")3.还是举个例子讲解一下:QMessageBox::warning(this, tr("Waring"),tr("输入用户ID或者密码错误,请重新输入!"),QMessageBox::Yes);测试结果:方法二:(不一定行)4.这个方法相当简单,在.cpp(非main.cpp)处,哪儿需要用到中文时trUtf8()函数即可,如:trUtf8(“我是中文!”)头文件都不需要加!5.还是举个例子讲解一下:QMessageBox::information(this, trUtf8("打开成功"), trUtf8("已经成功打开串口:")+ui->portName_b->currentText(), QMessageBox::Ok);测试结果:Linux下Qt4程序用得少,懒得搞,估计跟Windows下差不多,自己百度去吧!。
2.安装qmake在linux平台上,安装完qt以及相关的qt工具包,qmake就已经被安装好了.你唯一要注意的就是QTDIR值的设定,这个必须设置到Qt被安装到的地方。
如:/usr/lib/qt3/,以及qmake可执行文件的路径加到PA TH路径中.3. 一个简单的例子用vi写个hello.c ,#include <stdio.h>int main(int argc, char** argv){printf("Hello, world!\n");return 0;}创建qmake需要的项目文件(hello.pro),SOURCES = hello.cppCONFIG += qt warn_on releaseMakefile可以像这样由".pro"文件生成:qmake -o Makefile hello.pro现在你的目录下已经产生了一个Makefile 文件,输入"make" 指令就可以开始编译hello.c 成执行文件,执行 ./hello 和world 打声招呼吧!打开这个Makefile文件看看,是不是很专业啊!4.高级操作技巧当然,在实际使用过程中,我们的工程不可能象这个程序这样简单的,它可能有多个目录,多个头文件,多个源文件,需要链接器它不同的链接库等等情况。
别急,让我和你慢慢道来。
这些都是非常容易用qmake来实现的。
我们从一个更加复杂的项目文件为例和你详细的讲诉qmake的高级技巧:项目文件示例:SOURCES += myqt.cppSOURCES += main.cppHEADERS += myqt.hFORMS += xsimform.uiTEMPLATE = libCONFIG += debug warn_on qt thread x11 pluginTARGET = ../bin/panel_qtINCLUDEPATH = ../../../../xsim ../../../../xsim/IMdkitDEFINES = BDB_VERSION4 OS_LINUX从这个文件可以知道,SOURCES变量指向项目中的源文件,当项目中有多个源文件时,我们需对项目中的每一个源文件都这样做,直到结束:SOURCES += hello.cppSOURCES += main.cpp当然,如果你喜欢使用像Make一样风格的语法,你也可以写成这样,一行写一个源文件,并用反斜线结尾,然后再起新的一行:SOURCES = hello.cpp main.cppHEADERS变量指向项目中的头文件,多个头文件的时候,和多个源文件的解决方法一致。
qt3和qt4并存问题的解决方法mconela发布于2008-8-24 | 1145次阅读字号: 大中小 (网友评论0条) 我要评论这段时间出于学习目的,在ubuntu下同时安装了qt3和qt4。
但是在编译qt4文件的时候出现问题,总是提示找到不某些文件,例如:错误:qt4/QApplication:No such file or directory错误:qt4/QLabel:No such file or directory后来发现qmake的默认版本的qt3hua@hua-desktop:/usr/bin$ qmake -vQmake version: 1.07a (Qt 3.3.8b)Qmake is free software from Trolltech ASA.默认的qmake只是一个链接:hua@hua-desktop:/usr/bin$ ls -l qmakelrwxrwxrwx 1 root root 23 2008-06-29 23:00 qmake -> /etc/alternatives/qmakehua@hua-desktop:/usr/bin$ ls -l /etc/alternatives/qmake-rwxr-xr-x 2 root root 4246744 2008-05-22 19:04 /etc/alternatives/qmake ->/usr/bin/qmake-qt3所以要qt4编译的话,可以用qmake-qt4,也可以修改默认版本hua@hua-desktop:/usr/bin$ sudo ln -s /usr/bin/qmake-qt4 /etc/alternatives/qmake这样,qmake就可以编译qt4文件了。
作者:华清远见武汉华嵌中心金牌讲师李家凯1、QT3在QT3中,用designer设计好界面后,使用uic来根据界面生成代码文件,QT3的uic可以自动生成.h和.cpp文件,假设你在制作一个名叫DemoDlg的对话框,生成文件名为DemoDlg.ui的ui文件,那么QT3的uic生成的文件则是DemoDlg.h和DemoDlg.cpp,具体的命令如下:# uic DemoDlg.ui -o DemoDlg.h# uic DemoDlg.ui -i DemoDlg.h -o DemoDlg.cpp所有的界面初始化工作都在cpp文件中执行,控件的定义在h文件的类中声明,之后程序的逻辑代码(包括信号与槽的连接)也将加入这个文件,那么对于一个已经完成逻辑功能的对话框来说,如果要修改界面布局,你就不得不重新用uic生成.h和.cpp文件,然后将其中界面相关的代码复制到你已经修改的文件中,此时决不能直接用uic直接生成到修改过的文件上,因为那样你的代码将全部被覆盖掉。
VC经典的编译错误解决办法VC经典的编译错误解决办法(转载)vc编程2008-07-08 11:09:39 阅读39 评论0 字号:大中小订阅1、Fatal Error C1010: unexpected end of file while looking for preco mpiled header directive:编译时总出这个错误为什么?: fatal error C1010: unexpected end of file while looking for precompiled : header directive: 我查了msdn好像不是他说的错误原因.这是预编译头文件没有包括进来, 有两种解决办法。
(一) 是把所有的源程序文件前面都加上#include(二) 如果你不原意改变源文件就在菜单上选择Project->Settings... 选择相应的配置(如果你是用Debug方式编译,就选Debug方式,如果Release方式就用Rel ease),然后把下面的源文件树打开,选择没有加上面那个include语句的文件,在右边把有关precompiled的项目取消或选成none precompiled之类的选项就成了.2、Linker Tools Error LNK2001: unresolved external symbol "symbol "学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。
产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。
如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。
初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:unresolved external symbol “symbol”(不确定的外部“符号”)。
unexpected result of qmake query -回复首先,我们需要搞清楚什么是qmake查询(qmake query)以及它所提供的功能。
qmake是Qt框架的一个工具,用于自动构建和管理Qt项目。
它是一种基于文本的构建系统,允许开发者使用简单的.pro文件来描述项目的配置和依赖关系。
而qmake查询就是指在这个构建系统中用于获取有关项目配置和其他信息的查询操作。
通常情况下,开发者可以通过运行qmake查询来了解一些项目的信息,比如编译器的路径、库的位置、目标文件的存放路径以及可用的Qt模块等等。
这些信息对于调试和构建项目都非常有价值。
然而,有时候我们可能会遇到一些意外的结果,需要仔细分析和解决。
那么,如果遇到了一个意外的qmake查询结果,我们应该如何解决呢?下面将一步一步回答这个问题。
第一步是检查查询的请求是否正确。
有时候,我们可能会犯下拼写错误或者错误的查询语法,导致查询返回了意外的结果。
所以,我们首先需要仔细检查查询的请求,确保它们没有错误。
比如,我们可以检查查询的参数、命令的语法、文件的路径等等。
如果查询的请求没有问题,那么我们需要进一步检查项目的配置文件。
在Qt项目中,通常会有一个.pro文件用于描述项目的配置和依赖关系。
在这个文件中,我们可以定义一些变量和属性,这些信息会被qmake用于生成编译脚本。
所以,我们需要确保项目的配置文件没有错误,并且项目的配置与我们预期的一致。
接下来,我们可以检查一下项目的环境变量。
有时候,意外的查询结果可能是由于项目的环境变量设置错误引起的。
我们可以检查一下与项目相关的环境变量,比如PATH变量、QTDIR变量等等,确保它们的设置是正确的。
此外,我们还可以尝试更新Qt框架或者qmake工具。
有时候,一些意外的查询结果可能是由于Qt框架或者qmake工具本身的bug引起的。
在这种情况下,更新Qt框架或者qmake工具可能会解决问题。
第一篇初级问题1用Qt4.8.5打不开冯工柏菲软件问题描述:运行环境为Qt4.8.5 + QtCreator3.0.0+VS2010for Windows(x86),用Creator无法打开项目文件,截图如下:弹出错误:Cannot read E:/PROJECT/Zhou-0410/testToolbar.pro: Un expected UTF-8 BOM原因分析:未知解决方法:1安装VS2010SP1 ,未解决2安装VS-Add,未解决3使用Creator2.6 解决2编译失败,系统找不到指定路径问题描述:见下图专业版+ Debug ing Toolsaar9TF33E MBMFtmufldktr** ■「W 匿受去占完"矗& 护上聪 专*「2i:51 L 24£ 正总比芒]hEHCigiiAJ : FlleiS (j*2€i.i -dHizzM^f 匚 V15JE1 3匚Libi.口 ID-2> ■■.CBIBfmite.eae H■Ds -M'aogsiii Filat v | XhLiezcaafT. Tl>ua.l 10. DV712\BIE1'> SHAJU . MQ 19 -C HAfaCLla.lNibjg! _ ■L . i: -4. =. ~ J ; . . Utt -ffmiZCMl. ■MUTIJ: -fiQT_DLL ■BgN^_DU ^BHLfWX u.D@T_QLL .-WT SUI_WB -wr CeM :_lJB -呻口砂IE Jfflfli -aQT_}flVE =S5£ ■冷」HXITEJCTOXT ■曄严西二适Eh -I^^TTO^^JWPCsCT -I«c 3 .i7&\vS>aiaxj.iKl^dh\grt^»B H 占*甘胃盘首丄曲*.曲diuia'^ j.-工■匸=£軒\■二百■轨右久-!■== ・■・ »XVA JO SOX iMAuMX^WvhR u v " . I - l«l t SK4T\>>r L *1 MriXqfla L»»r&«Xp« reS HH " -1*«I%Q C X E 3K-C ・D ・2\ffrtE -T"T .Mbas-Otani" -I-GS 'MJ S M :・C,=YT3^[Jl ・\:LiKJ 1EHlu'i iJiGGiT^S ・ -J^lEtaW -I 1".- -I"・,^ZhnaHlVQf -I".- -I^ci ; ■沪" ■ • ■ w>a *B_!13C_yEfl-HtO 亠DWim f ^\RiT\JleriALPwci4eKMfialjpa£«^j«MBitt{a«-MWemib -a jetu^'ijKi^QCTE Krl«lpa rt .-npc me; frXK ; FT E fuc3i file-丄M B HE : riEzal tziar D1C-7T :fc£ j \€r \4: … S . &XTS2 Q1 DXt_ n'1. ■-ii : . tie"': 爲 Rff 旧"Stef :.创AKE I f«c«JL »IE «J QIG" "4叭加巧・*» Tiliv |is”| IM ■■■■■•監 7i *M «1 9wu4k«C>\W\>T44\HN I«>.«H *H MI' 9B 3*2 七 T23;57 ;2flF MH "& '(.riWcsii FULeB (x«4) MVIorasiDEt Visual *5tEW lil gV^lEkim 口i"<e mb 畳出■ AliftS 2 * CTT^F 'ufli If ^93g jr?5 tfl? ?tflT-?-Pl>4X >(£11; I 皆g 行歩強辿JU原因分析:1 )可能:添加VS 编译器环境变量,在 PATH 中添加VS 中NMAKE 路径 2) 确定:Creator 或编译器无法识别 &符号,即路径原文件名为R&T 中含有非法字符,无法准确识别路径3) 默认的环境变量已经有了NMAKE 路径解决方法:把路径中非法字符删除即可3编译出现乱码,Parse Error原因分析:未知,应该是非法字符导致。
keilMDK编译器警告和错误详解(不定期更新)⼯作后从单⽚机转成ARM,刚开始⽤ADS1.2编译器,⽤了⼀段时间,因为我接⼿的项⽬的⽼程序正是⽤ADS编译的,部门也⼤都在⽤.在学单⽚机的时候⽤的是keil c51编译器,ads和这个编译器在易⽤性上真是⽆法⽐较.后来渐渐知道keil已经被arm公司收购,现在keil MDK 成为了arm官⽅编译器,所以决定重新投奔keil,利⽤平时的时间,将原程序重新⽤mdk编译.mdk的优点就没必要说了,在这⾥把平时遇到的编译器给出的警告和错误信息给出详解,希望给初学者⼀点帮助,发现错误,需要补充的欢迎留⾔.1.warning: #550-D: variable "d" was set but never used描述:变量'd'定义但从未使⽤,或者是,虽然这个变量你使⽤了,但编译器认为变量d所在的语句没有意义,编译器把它优化了.解决:仔细衡量所定义的变量d是否有⽤,若是认定变量d所在语句有意义,那么尝试⽤volatile关键字修饰变量d,若是真的没有⽤,那么删除掉以释放可能的内存.2.warning: #1-D: last line of file ends without a newline描述:⽂件最后⼀⾏不是新的⼀⾏.编译器要求程序⽂件的最后⼀⾏必须是空⾏,想了半天没想通为什么要这样.解决:可以不理会.若是觉得出现警告不爽,那么在出现警告的⽂件的最后⼀⾏敲个回车,空出⼀⾏.3. warning: #111-D: statement is unreachable描述:声明不可能到达.多出现在这种场合:int main(void){...while(1) //⽆限循环,这在不使⽤操作系统的程序中最常见{...}return 0; //这句声明在正常情况下不可能执⾏到,编译器发出警告}解决:不理会.4. warning: C3017W: data may be used before being set描述:变量'data'在使⽤前没有明确的赋值.如:uint8 i,data; //定义变量i和data,⼆者都没有明确赋值for ( i = 0; i < 8; i++) //变量'i'在语句中被赋值0{if ( IO1PIN & SO_CC2420 )data |= 0x01; //变量'data'在使⽤前没有明确赋值,编译器发出警告elsedata &= ~0x01;}解决:应仔细衡量该变量的初始值是否为0,若是,可以不理会这个警告,因为MDK编译器在程序执⾏前,会将使⽤到的数据区初始化为0,但若是该变量的初始值不应该是0,忽略这个警告可能会引起致命错误.这个警告应引起⾜够重视.应养成变量赋初值的习惯,好在有编译器给把关.5. warning: #177-D: variable "temp" was declared but never referenced描述:变量'temp'进⾏了声明但没有引⽤.多出现在声明了⼀个变量,但却没有使⽤它,它和warning: #550-D: variable "temp" was set but never used不同之处在于temp从没有使⽤过.解决:若是定义的变量确实没有⽤,删除掉;若是有⽤,则在程序中使⽤.与该警告类似的还有warning: #177-D: function "MACProcessBeacon" was declared but never referenced6. warning: #940-D: missing return statement at end of non-void function "DealwithInspect2"描述:返回⾮空的函数"DealwithInspect2"的最后缺少返回值声明.如:int DealwithInspect2(uint32 test){.........//此处应该是return x;返回⼀个int型数据,若是没有返回值,编译器产⽣警告}7..warning: #1295-D: Deprecated declaration lcd_init - give arg types描述:在定义函数的时候,如果你写上函数参数,就会有这个警告,⽐如void timer_init(); 这⾥就没有形参,如果这样的话,编译器会给出警告.1. error: #65: expected a ";"描述:缺少分号.⼤多是漏忘';'.解决:双击错误⾏,在定位到错误点的附近找到没加';'号的语句,加上分号.并不⼀定在定位到的错误⾏才却分号,可能是这⾏的上⼀⾏,也可能是下⼀⾏.2. error: #65: expected a ";"和error: #20: identifier "xxxx" is undefined⼀块出现,⽽且后⾯的error: #20错误可能⼀⼤堆描述:这个错误对于第⼀次遇上的⼈来说绝对是个噩梦,当错误出现,满怀希望的双击错误提⽰,来到错误⾏时却愕然发现,错误⾏绝对没有错,于是找找错误⾏的上⼀⾏,下⼀⾏,没有错误,再找上上⾏,下下⾏...让⼈⽆⽐郁闷的事情出现了:编译提⽰的所有错误⾏都不可能有错误出现.其实这最可能是你在.h⽂件声明外部变量或者函数时,没有在声明语句的最后加分号!如果你有很多模块,如main.c,lcd.c,key.c...有很多头⽂件,如lcd.h,key.h,若是在lcd.h⽂件声明函数时没有加分号,那么这种错误可能定为到main.c中,所以要检查所有头⽂件.解决:仔细检查.h⽂件,将分号补上.3. Error: L6200E: Symbol flagu multiply defined (by uart0.o and main.o).描述:变量(也是⼀种符号)flagu多处定义(在uart0.c中和main.c都定义了).通常错在全局变量定义重复.⽐如:在main.c中定义全局变量flagu:uint8 flagu=0;在uart0.c中也⽤到该变量,于是声明此变量,我通常都是先复制定义的变量再在变量前⾯加关键字extern修饰:extern uint8 flagu=0;然后编译,就会出现上⾯的连接错误,原因在于,我在uart0.c中是⼜定义了⼀个变量,⽽不是声明变量,因为我给变量赋了初值"flagu=0",这样就重复定义了变量flag.正确的声明⽅法是去掉赋值部分:extern uint8 flagu;解决办法:找到重复定义的变量,看情况修改⼀处.4.error: #159: declaration is incompatible with previous "wr_lcd" (declared at line 40)描述:在wr_lcd函数还没有声明之前就已经使⽤了.多出现在两种情况:第⼀种,wr_lcd函数体还没有写,就已经⽤到了它,这种情况多出现在写⼀个程序的⼤体结构中,只是简单写⼀下框架.第⼆种情况⽐较常见,函数a调⽤函数b,但函数b的函数体在函数a的下⾯:void a(void) //函数a的实体{b(); //调⽤函数b}void b(void) //函数b的实体{...}这样如果点编译,就会产⽣error: #159的错误,因为当函数a调⽤函数b时,发现在这之前都没有函数b的任何声明.解决⽅法:在函数a调⽤函数b之前,对函数b进⾏声明,如:void b(void); //对函数b进⾏声明void a(void) //函数a的实体{b(); //调⽤函数b}void b(void) //函数b的实体{...}5. error: #137: expression must be a modifiable lvalue描述:表达式必须是⼀个可以修改的左值.主要出现在这种现象:a=NUM;NUM是⼀个数值或表达式,a为⼀个变量,但a被定义为像const这种不可更改的类型,导致NUM不能赋值给变量a.解决⽅法:要么放弃赋值,要么修改变量属性.6.error: #18: expected a ")"如果是出现在c⽂件中, 多半是因为少了⼀个")",或者错误⾏有编译器不识别的字符如果出现在头⽂件中,错误⾏⼜是⼀个函数声明,多半是因为在函数声明中有编译器不认识的字符.7.error: #7: unrecognized token未识别的标记,多半是切换成了中⽂标点。
Qt Creator提示"Qt没有被正确安装,请运行makeinstall"的解决办法笔者最近使用Qt在开发一些小程序,觉得这个框架设计确实很好,使用了信号和槽解决了组件之间的通讯问题,可以说是基于C++语言上一个非常大的创新,大大提高了开发人员的编码效率,也使整个C++语言更加抽象。
笔者很喜欢C++语言的简单、朴实、高效,不像.NET 那样,即使是一个很小的程序也需要装个上百兆的运行库,对于很多场景来说.NET就是鸡肋...。
一个快速、稳定、简单、高效的编程语言一定是今后开发者的最爱。
好了,废话不多说,说说题目中那个问题。
这个问题分两种解决方式:方式一:笔者使用的是最新版本的Qt5.2.2开发环境,单位电脑已经安装了这个开发环境,用U盘将Qt整个安装目录拷回家里笔记本,发现QtCreator还是可以用,开心!可就在创建项目时候问题来了,说没有配置Kit云云,跟着软件中链接一路点去,发现Qt Creator中选项“构建和运行”几个配置有问题(有红色叹号),如下图:本以为只是路径错了,可最后发现QtCreator中根本没有配置这个路径的地方,只能新增一个配置,也算,照着错误的路劲将本机正确路径添加了新Qt Version项目,项目前还是有红色叹号,费解。
上度娘找了找,发现是qmake的原因,据说在安装Qt时qmake.exe程序会编译,而且还把安装路径hardcode到qmake程序中,奇怪的设计!看了几个帖子都说要用二进制编辑软件修改qmake.exe文件,将错误路径修改正确,真麻烦!不死心啊,继续上度娘(嘿嘿),终于在CSDN的帖子里发现一个更科学的解决办法,不用暴力修改qmake,即在qmake.exe同目录下,新建一个qt.conf文本文件(记住哦,保存的编码一定要是ANSI格式,这个可以用windows自带记事本的另存为功能确认),文件内容为:[paths]Prefix = [Qt所在目录]/Qt/Qt5.2.0/5.2.0/mingw48_32其中“D:/work/cpp/program”这部分可以修改为你自己的Qt 安装目录所在路径,保存后重新打开Qt Creator在看“选项”中的“Qt Version”手动配置的那一项,前面红色叹号没有了,OK搞定!方式二:如果目标电脑上你所拷贝的Qt安装目录路径和源电脑上Qt 安装路径一致,你只需要修改路径“[Qt所在目录]\Qt\Qt5.2.0\Tools\QtCreator\share\qtcreator\QtProject\qtcreator”下三个文件profiles.xml、qtversion.xml和toolchains.xml中路劲为目标机器上正确路径即可。
Qt编程中qmake的使⽤详解⾸先说⼀下qt编程的步骤,然后再仔细说⼀下qmake的使⽤。
我看书上的都是编写好cpp⽂件后,分别执⾏命令: qmake -project、qmake、make,然后执⾏就可以了,但是要是我在⼀个⽂件夹下有多个cpp⽂件,qmake怎么识别?make⽣成的最后执⾏⽂件的名,我怎么能随⼼所欲的⾃⼰定?带着疑问,找了⽹上的资料,不如所⾐,然后尝试着gcc编译的思想竟然撞到了。
其实我感觉要要真正了解qmake的使⽤⽅法,直接在终端下输⼊命令:qmake -help就可以了,我也是这样做的,帮助内容如下[plain]1. Usage: qmake [mode] [options] [files]2.3. QMake has two modes, one mode for generating project files based on4. some heuristics, and the other for generating makefiles. Normally you5. shouldn't need to specify a mode, as makefile generation is the default6. mode for qmake, but you may use this to test qmake on an existing project7.8. Mode:9. -project Put qmake into project file generation mode10. In this mode qmake interprets files as files to11. be built,12. defaults to *.c; *.ui; *.y; *.l; *.ts; *.xlf; *.qrc; *.h; *.hpp; *.hh; *.hxx; *.H; *.cpp; *.cc; *.cxx; *.C13. Note: The created .pro file probably will14. need to be edited. For example add the QT variable to15. specify what modules are required.16. -makefile Put qmake into makefile generation mode (default)17. In this mode qmake interprets files as project files to18. be processed, if skipped qmake will try to find a project19. file in your current working directory20.21. Warnings Options:22. -Wnone Turn off all warnings; specific ones may be re-enabled by23. later -W options24. -Wall Turn on all warnings25. -Wparser Turn on parser warnings26. -Wlogic Turn on logic warnings (on by default)27. -Wdeprecated Turn on deprecation warnings (on by default)28.29. Options:30. * You can place any variable assignment in options and it will be *31. * processed as if it was in [files]. These assignments will be parsed *32. * before [files]. *33. -o file Write output to file34. -d Increase debug level35. -t templ Overrides TEMPLATE as templ36. -tp prefix Overrides TEMPLATE so that prefix is prefixed into the value37. -help This help38. -v Version information39. -after All variable assignments after this will be40. parsed after [files]41. -norecursive Don't do a recursive search42. -recursive Do a recursive search43. -set <prop> <value> Set persistent property44. -unset <prop> Unset persistent property45. -query <prop> Query persistent property. Show all if <prop> is empty.46. -cache file Use file as cache [makefile mode only]47. -spec spec Use spec as QMAKESPEC [makefile mode only]48. -nocache Don't use a cache file [makefile mode only]49. -nodepend Don't generate dependencies [makefile mode only]50. -nomoc Don't generate moc targets [makefile mode only]51. -nopwd Don't look for files in pwd [project mode only]52. song@ubuntu:~/lianxi/qt$ clear53.54. song@ubuntu:~/lianxi/qt$ qmake -help54. song@ubuntu:~/lianxi/qt$ qmake -help55. Usage: qmake [mode] [options] [files]56.57. QMake has two modes, one mode for generating project files based on58. some heuristics, and the other for generating makefiles. Normally you59. shouldn't need to specify a mode, as makefile generation is the default60. mode for qmake, but you may use this to test qmake on an existing project61.62. Mode:63. -project Put qmake into project file generation mode64. In this mode qmake interprets files as files to65. be built,66. defaults to *.c; *.ui; *.y; *.l; *.ts; *.xlf; *.qrc; *.h; *.hpp; *.hh; *.hxx; *.H; *.cpp; *.cc; *.cxx; *.C67. Note: The created .pro file probably will68. need to be edited. For example add the QT variable to69. specify what modules are required.70. -makefile Put qmake into makefile generation mode (default)71. In this mode qmake interprets files as project files to72. be processed, if skipped qmake will try to find a project73. file in your current working directory74.75. Warnings Options:76. -Wnone Turn off all warnings; specific ones may be re-enabled by77. later -W options78. -Wall Turn on all warnings79. -Wparser Turn on parser warnings80. -Wlogic Turn on logic warnings (on by default)81. -Wdeprecated Turn on deprecation warnings (on by default)82.83. Options:84. * You can place any variable assignment in options and it will be *85. * processed as if it was in [files]. These assignments will be parsed *86. * before [files]. *87. -o file Write output to file88. -d Increase debug level89. -t templ Overrides TEMPLATE as templ90. -tp prefix Overrides TEMPLATE so that prefix is prefixed into the value91. -help This help92. -v Version information93. -after All variable assignments after this will be94. parsed after [files]95. -norecursive Don't do a recursive search96. -recursive Do a recursive search97. -set <prop> <value> Set persistent property98. -unset <prop> Unset persistent property99. -query <prop> Query persistent property. Show all if <prop> is empty.100. -cache file Use file as cache [makefile mode only]101. -spec spec Use spec as QMAKESPEC [makefile mode only]102. -nocache Don't use a cache file [makefile mode only]103. -nodepend Don't generate dependencies [makefile mode only]104. -nomoc Don't generate moc targets [makefile mode only]105. -nopwd Don't look for files in pwd [project mode only]Usage: qmake [mode] [options] [files]QMake has two modes, one mode for generating project files based onsome heuristics, and the other for generating makefiles. Normally youshouldn't need to specify a mode, as makefile generation is the defaultmode for qmake, but you may use this to test qmake on an existing projectMode:-project Put qmake into project file generation modeIn this mode qmake interprets files as files tobe built,defaults to *.c; *.ui; *.y; *.l; *.ts; *.xlf; *.qrc; *.h; *.hpp; *.hh; *.hxx; *.H; *.cpp; *.cc; *.cxx; *.CNote: The created .pro file probably willneed to be edited. For example add the QT variable tospecify what modules are required.-makefile Put qmake into makefile generation mode (default)In this mode qmake interprets files as project files tobe processed, if skipped qmake will try to find a projectfile in your current working directoryWarnings Options:-Wnone Turn off all warnings; specific ones may be re-enabled bylater -W options-Wall Turn on all warnings-Wparser Turn on parser warnings-Wlogic Turn on logic warnings (on by default)-Wdeprecated Turn on deprecation warnings (on by default)Options:* You can place any variable assignment in options and it will be ** processed as if it was in [files]. These assignments will be parsed ** before [files]. *-o file Write output to file-d Increase debug level-t templ Overrides TEMPLATE as templ-tp prefix Overrides TEMPLATE so that prefix is prefixed into the value-help This help-v Version information-after All variable assignments after this will beparsed after [files]-norecursive Don't do a recursive search-recursive Do a recursive search-set <prop> <value> Set persistent property-unset <prop> Unset persistent property-query <prop> Query persistent property. Show all if <prop> is empty.-cache file Use file as cache [makefile mode only]-spec spec Use spec as QMAKESPEC [makefile mode only]-nocache Don't use a cache file [makefile mode only]-nodepend Don't generate dependencies [makefile mode only]-nomoc Don't generate moc targets [makefile mode only]-nopwd Don't look for files in pwd [project mode only]song@ubuntu:~/lianxi/qt$ clearsong@ubuntu:~/lianxi/qt$ qmake -helpUsage: qmake [mode] [options] [files]QMake has two modes, one mode for generating project files based onsome heuristics, and the other for generating makefiles. Normally youshouldn't need to specify a mode, as makefile generation is the defaultmode for qmake, but you may use this to test qmake on an existing projectMode:-project Put qmake into project file generation modeIn this mode qmake interprets files as files tobe built,defaults to *.c; *.ui; *.y; *.l; *.ts; *.xlf; *.qrc; *.h; *.hpp; *.hh; *.hxx; *.H; *.cpp; *.cc; *.cxx; *.C Note: The created .pro file probably willneed to be edited. For example add the QT variable tospecify what modules are required.-makefile Put qmake into makefile generation mode (default)In this mode qmake interprets files as project files tobe processed, if skipped qmake will try to find a projectfile in your current working directoryWarnings Options:-Wnone Turn off all warnings; specific ones may be re-enabled bylater -W options-Wall Turn on all warnings-Wparser Turn on parser warnings-Wlogic Turn on logic warnings (on by default)-Wdeprecated Turn on deprecation warnings (on by default)Options:* You can place any variable assignment in options and it will be ** processed as if it was in [files]. These assignments will be parsed ** before [files]. *-o file Write output to file-d Increase debug level-t templ Overrides TEMPLATE as templ-tp prefix Overrides TEMPLATE so that prefix is prefixed into the value-help This help-v Version information-after All variable assignments after this will beparsed after [files]-norecursive Don't do a recursive search-recursive Do a recursive search-set <prop> <value> Set persistent property-unset <prop> Unset persistent property-query <prop> Query persistent property. Show all if <prop> is empty.-cache file Use file as cache [makefile mode only]-spec spec Use spec as QMAKESPEC [makefile mode only]-nocache Don't use a cache file [makefile mode only]-nodepend Don't generate dependencies [makefile mode only]-nodepend Don't generate dependencies [makefile mode only]-nomoc Don't generate moc targets [makefile mode only]-nopwd Don't look for files in pwd [project mode only]qmake命令格式qmake [mode] [options] [files]mode选项-project ⽣成.pro⽂件-makefile ⽣成Makefile⽂件options选项(这⾥介绍⼏个常⽤的,其它的⾃⼰去翻译上⾯,其实我也是刚学,⽤到的时候再学习哈)-o file 输出⽂件名,⽐如qmake -project hello.cpp -o hello.pro,就会⽣成⼀个hello.pro⽂件,如果是qmake -project hello.cpp -o hello11.pro,就会⽣成⼀个hello11.pro⽂件实验11、编写代码,命名为hello.cpp,如下hello.cpp代码如下[cpp]1. #include<qapplication.h>2. #include<qpushbutton.h>3.4. int main(int argc,char *argv[])5. {6. QApplication a(argc,argv);7. QPushButton hellobtn("Hello World!",0);8. hellobtn.resize(200,50);9. hellobtn.show();10. return a.exec();11. }#include<qapplication.h>#include<qpushbutton.h>int main(int argc,char *argv[]){QApplication a(argc,argv);QPushButton hellobtn("Hello World!",0);hellobtn.resize(200,50);hellobtn.show();return a.exec();}2、qmake -project (⽤于创建.pro⽂件,将所有的⽂件编译成⼀个与平台⽆关的⼯程⽂件)可见默认⽣成的⽂件名为 qt.pro3、qmake (读取本⾝的Qt设置,⽣成与库⼀致的相应的Makefile)4、make (根据⽣成的Makefile,将⽂件编译为⼆进制可执⾏程序)可见⽣成了qt可执⾏程序5、执⾏命令:./qt实验2本实验中并没有⽤到上⾯所讲的⽅式,⽽是直接使⽤了默认值,但是假设说该⽂件夹下有两个cpp⽂件,如下图本实验中并没有⽤到上⾯所讲的⽅式,⽽是直接使⽤了默认值,但是假设说该⽂件夹下有两个cpp⽂件,如下图这时候再执⾏命令:qmake -project会怎么样呢?会出现下⾯的结果有点意思,竟然不出错,但是你知道它⽣成的qt.pro是哪个cpp⽂件的吗?我不知道,加⼊这⾥我想对test.cpp操作,这时候就要按照上⾯的格式了。
qmake的介绍qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile 的工具。
手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。
使用qmake,开发者创建一个简单的“项目”文件并且运行qmake生成适当的Makefile。
qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。
Trolltech 公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具. qmake也注意了Qt的特殊需求,可以自动的包含moc和uic的连编规则。
安装qmake当Qt被连编的时候,默认情况下qmake也会被连编.这一部分解释如何手工连编qmake。
如果你已经有了qmake,可以跳过这里,请看10分钟学会使用qmake。
手动安装qmake在手工连编Qt之前,下面这些环境变量必须被设置:•QMAKESPEC这个必须设置为你所使用的系统的平台和编译器的组合。
举例来说,加入你使用的是Windows和Microsoft Visual Studio,你应该把环境变量设置为win32-msvc。
如果你使用的是Solaris和g++,你应该把环境变量设置为solaris-g++。
当你在设置QMAKESPEC时,可以从下面的可能的环境变量列表中进行选择:aix-64 hpux—cc irix-032 netbsd—g++ solaris—cc unixware7-g++aix-g++ hpux-g++ linux—cxx openbsd—g++ solaris—g++win32—borland aix-xlc hpux-n64 linux—g++ openunix-ccsunos—g++ win32-g++ bsdi—g++ hpux-o64 linux—icc qnx-g++tru64—cxx win32—msvc dgux-g++ hurd-g++ linux—kccreliant—64 tru64-g++ win32—watc freebsd—g++ irix—64macx—pbuilder reliant-cds ultrix-g++ win32—visa hpux—accirix-g++ macx-g++ sco—g++ unixware—g hpux—acc irix—n32solaris—64 unixware7—ccenvvar是下面之一时,环境变量应该被设置到qws/envvar:linux—arm-g++ linux-generic—g++ linux-mips-g++ linux-x86-g++linux-freebsd—g++ linux-ipaq—g++ linux—solaris-g++qnx-rtp—g++•QTDIR这个必须设置到Qt被(或者将被)安装到的地方。
编译他人的QT4项目提示qmake出错解决方法
############################################################################### #操作系统:Win7垃圾版
#QT: 4.8.1
#Write By Kinglate 20130806
###############################################################################
1.最近用老式机子写了一个Qt4小程序,然后把整个项目拿到Win7本本中打开后,出现这样的提示:
点击是之后,编译出现如下的错误提示:
构建项目client 时发生错误(目标: 桌面)
当执行构建步骤'qmake'时
非常无奈,两个电脑用的Qt版本完全一致,还是遇到了这样的问题!以前都是重新建立一个一样的工程,一个个文件里的代码复制代替重新编译才能通过,虽然说方法很笨,也不算需要很长时间,但是文件多时就烦了。
现在终于发现了解决方法:
2.方法一:
A.打开他机的工程,在出现如下提示时,选择“否”
B.选择“否”之后出现如下提示:
点击“完成”即可编译通过了!当然,该QT4程序本就不能被编译通过的除外。
3.方法二:
C.打开他机的工程,在出现如下提示时,选择“是”
版本(本人的是Qt 4.8.1)即可。