问题描述
- Qt 5怎么设置msvc2010的编译器?
-
安装完qt-opensource-windows-x86-msvc2010-5.5.1之后,为什么空的工程都编译不了。
出现这样的问题:'rc.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
解决方案
The source code is available as a zip (270 MB) or a tar.gz (219 MB) or check all installers here.从此下载并编译。
然后,更改qtbasemkspecswin32-msvc*qmake.conf文件,把下面3行
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd
改为:
QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd
并保存。
由于Qt5官方源码包是为动态编译准备的,因此要静态编译,须对源码进行更改并重命名函数,否则会出现重定义错误。
更改文件及重命名函数如下(注:在下把冲突函数加007,008重命名)
qtactiveqtsrcactiveqtsharedqaxtypes.h
qtactiveqtsrcactiveqtcontrolqaxserverbase.cpp
qtactiveqtsrcactiveqtcontainerqaxbase.cpp
qtactiveqtsrcactiveqtcontainerqaxwidget.cpp
文件中的 QVariantToVARIANT( 一律替换为 QVariantToVARIANT007(
qtactiveqtsrcactiveqtsharedqaxtypes.cpp中的 QVariantToVARIANT( 替换为 QVariantToVARIANT008(
define QVariantToVARIANT QVariantToVARIANT_server
define QVariantToVARIANT QVariantToVARIANT_container
分别替换为:
define QVariantToVARIANT008 QVariantToVARIANT_server
define QVariantToVARIANT008 QVariantToVARIANT_container
另外还要更改2个API
qtactiveqtsrcactiveqtcontrolqaxserverdll.cpp
STDAPI DllGetClassObject(const GUID &clsid, const GUID &iid, void** ppv)
STDAPI DllCanUnloadNow()
分别替换为:
STDAPI DllGetClassObject007(const GUID &clsid, const GUID &iid, void** ppv)
STDAPI DllCanUnloadNow007()
一切就绪后,visual studio 命令提示进入源码文件夹,输入命令:
configure -debug-and-release -fast -static -platform win32-msvc2010 -qt-zlib -qt-libpng -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -nomake demos -nomake examples -nomake docs -opengl desktop -mp
然后nmake,等待编译完成.
进入Qt Creator,点击 工具->选项->Qt 版本->添加->选择 源码文件夹qtbasebinqmake.exe
再配置Kits,一切完成