vs2008编译qt很慢
A. 为什么 Qt Creator 的编译如此之慢
C++ 的编译很慢,与其他语言完全不在一个数量级。任何 C++ 项目都比其他语言的编译慢,一方面是 C++ 语言本身复杂,另外一方面是 C++ 头文件太大,很多库是直接在头文件里面实现的,所以每次需要编译的代码量很大。这个跟 C# 没有可比性。
MFC 使用预编译头文件来缓解这个问题,在 VC 里面集成了预编译好的 MFC 头文件,因而编译速度过得去。
Qt Creator 使用 mingw-gcc 编译,没有预编译头文件的机制,对每个源代码都需要编译 Qt 的头文件,所以完全编译会是慢的。
B. 谁了解QT编程工具啊,麻烦比较一下。
我先来抛砖引玉吧
1)内嵌VC开发的话,可以使用visual studio的各种C++功能,文本编辑/自动补全/调试等等和普通的C++开发差不多,gui界面会调用designer插件,这个vc/eclipse/kdevelop/qt creator都一样。相对来说比较方便。但是因为visual studio不支持并行编译(至少vs.net2008还不支持),因此编译较慢。如果是写了makefile,或者利用qt生成vc格式的makefile,那么qt.gitoris.org上有一个项目叫jom,和nmake基本兼容,但是支持并行编译,这个只能在命令行里面用
2)eclipse,给我的感觉怎么说呢,就不像是给C/C++程序员使用的IDE,它其实也就是用qt插件创建gui,在编译过程中插入moc/uic/rcc处理。编译速度要看是在windows下还是linux下,如果是wndows,eclipse使用的是mingw工具链,因此编译速度很慢。linux下用的是gcc工具链,因此速度较快
3)kdevelop分为3.x版本的和4.x版本的,3.x版本的比较成熟,但是有些功能不太容易使用,比如一个很简单的添加已存在的文件到项目中的操作,用kdevelop就是没有很直观的方式。不是很好用
4)qt creator,我觉得比kdevelop和eclipse好用,比visual studio 2008当然还是差一些。比如它的文件的编码格式(gb2312/iso88159-1/utf-8/big5)之类的设置,有时候似乎没有生效,我用kate或者gedit打开之后发现qt creator编码格式转换没有起作用。
这些工具在gui编码和qt特有的功能(信号/槽、属性、moc/uic/rcc)方面基本相同,都是调用qt designer插件。在编译速度方面,eclipse(win32) = QTCREATOR(WIN32+MINGW) < vc(nmake或IDE编译) < VC(JOM) = qtcreator(vc编译器) < eclipse(linux) = qtcreator(linux) = kdevelop(linux)。在文本编辑/自动补全/跳转方面,应该说是vc > qt creator > eclipse = kdevelop
C. qt和vs2008
应该是所链接的某个api库是使用2003编译的,而Qt使用的是2008进行编译,导致链接库不一致,从而链接失败了
可以试着将api库升级成支持2008的版本
D. vs不能编译qt
1. 下载qt的安装包和vs2011的qt插件,大家可以到下面的地址进行下载
BBS:
官网:
本人是在BBS上找到的,官网上没仔细去找了(英文太多)。
2. 安装qt sdk
安装其实很简单了,基本上一路回车即可,主要是要注意下qt的安装路径最好安装在全英文路径而且中间没有空格, 安装好后,可以运行开始菜单里面的qt demo,直观感受下qt的强大功能!
界面非常炫酷
4. 编译qt
qt默认使用mingw进行编译,如果要使用vs2011开发,需要将qt重新编译。
进
入开始菜单microsoft visual studio 2011,visual studio tools,visual studio
command prompt (2011),需要注意的是,这里面必须是使用visual studio command prompt
(2011),不能使用cmd的dos窗口
进入qt的安装目录后,执行cd qt,进入qt的根目录
运行命令 configure -platform win32-msvc2011,o(选择opensource模式)回车,y(同意license)回车
k1988插入:
在编译过程中,为了加快速度,可以对configure适当的加些参数,比如-fast,-no-webkit(这个貌似挺耗时的)
我
选择的命令行:configure -platform win32-msvc2011 -fast -debug-and-release
-no-webkit -no-script -no-qt3support -nomake demos -nomake examples
-nomake tools -mp
其中:mp是多线程编译选项。
接着就会自动配置qt的编译环境,等配置结束后,运行nmake,回车,qt就会开始漫长的编译过程,这段时间非常长,需要4个小时以上。
liuyu遇到的问题:(自己遇到过,当时没记录下来,但是记得编译过程中遇到这些问题)
1.DefaultLocalizationStrategy.cpp
C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/INCLUDE/yvals.h(21) : war
ning C4005: ‘_HAS_TR1’ : macro redefinition
command-line arguments : see previous definition of ‘_HAS_TR1’
platform/DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform/DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected en
d of file in macro expansion
NMAKE : fatal error U1077: ‘“C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/cl.EXE”’ : return code ‘0x2’
Stop.
NMAKE : fatal error U1077: ‘“C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/nmake.exe”’ : return code ‘0x2’
Stop.
NMAKE : fatal error U1077: ‘cd’ : return code ‘0x2’
Stop.
NMAKE : fatal error U1077: ‘cd’ : return code ‘0x2’
Stop.
解决办法:
打开文件…/Qt4.8.5/src/3rdparty/webkit/Source/WebCore
/platform/DefaultLocalizationStrategy.cpp
找到327行删除的引号“”
2.NMAKE:fatal error U1077. return code 0x2
产生原因:找不到代码文件中包含的头文件
解决办法:cmd下进入到vs安装路径/VC/Bin下,执行vcvars32,此时会执行vcvas32.bat自动为vs设置环境变量 (这个也试过好几回,没效果,依然出现上面错误)试试下面的就解决了:
经分析,是环境变量设置的CURR_DIR和TARGETDIR值中含有空格导致了此问题。
通过下面的命令删除环境变量即可。
在d:/Qt/4.8.6目录下键入下面的命令即可(不是很明白)
接着继续nmake命令 回车换行
k1988插入:(本人未找到以下文件)
请先删除
src/3rdparty/webkit/webcore/tmp/moc/debug_shared/mocinclude.tmp
src/3rdparty/webkit/webcore/tmp/moc/release_shared/mocinclude.tmp
/src/script/tmp/moc/debug_shared/mocinclude.tmp
/src/script/tmp/moc/release_shared/mocinclude.tmp
等文件,否则编译有可能失败。
k1988插入:
这一步很重要,关系到是否能用qt-vs-addin。
把d:/qt/bin下的.qmake.cache和configure.cache这两个文件手动备份到另一个地方。
(本人未尝试过)然后使用nmake clean进行清理掉那些中间文件(pdb,obj等文件),清理出4个g左右的空间。
nmake confclean是清理配制文件,占的空间不大,可以不执行了。这个时候再把刚备份的.qmake.cache和configure.cache拷回原处。
5.配置vs2011的qt开发环境(vs2011最好是英文版本,qt对vs2011中文版本可能支持的不好)
等qt编译好后就可以配置vs2011的开发环境了,进入vs2011,选择qt菜单,qt option,进入下图界面
k1988插入:
按
步骤编译好了,用qt助手paths加进去,不知为何ok键不亮, 红字提示:qt in the given path built using
mingw 这个是qt插件的bug,得手工改注册表 hkey_current_user/software/trolltech/versions/
下增加一个子项 qt486(需要的名称) 子项下面增加一个数值 installdir,值就是你要配置的qt路径
ps:如果没有versions这个文件夹就新建一个吧!
(这里确实是个坑,仅仅修改注册表居然没有用,还要去qt的lib文件夹下删掉两个文件 –>>删除qt的lib目录下(我的路径是D:/Qt/4.8.6/lib)的libqtmain.a and libqtmaind.a 两个文件。)
点击add,添加qt的安装目录,并取名字,我这里使用qt的4.8.6版本为名称,选择ok后即可。
6.新建或者导入qt项目
可以通过在vs2011新建一个qt项目
E. Visual Studio编译很慢,什么原因
第一步:你编译10几20次之后编译所需时间会达到10分钟左右,你关掉VS,并且用任务管理器关掉所有的vs进程
确保VS进程全部关掉后,重新启动VS打开项目,再次编译,如果时间正常则说明你的程序有死循环,程序问题,
如果时间很长,应该是VS问题,
不知道什么问题罗/
哈哈
你开发的其它程序有这种情况吗?
F. vs 2008 编译速度超慢 要将近十分钟!!
嗯,这个就是这样,我用08 10的都慢。最后还是换回了。6.0。那才叫神速啊。。
G. Visual Studio编译很慢,什么原因
Visual Studio编译很慢解决办法:
打开vs2010的工具选项,环境>常规之下 查看”视觉体验”配置,它默认选择了”基于客户端性能自动调整视觉体验”并启用硬件图形加速,取消选择这个选择。
H. 为什么编译QT花那么长时间
它本身就比较大,另外和你电脑的配置也有关系。你配置好就不用等多久。
I. VS2008编译软件连接速度慢,怎么解决
第一次编译的时候确实很慢,这个和电脑配置有关系的!
