代码改变世界

用VS2010编译Qt工程源码

2013-07-18 07:53  虫虫与贝贝  阅读(2024)  评论(0)    收藏  举报
1.为什么会有这种需要?
我猜测可能原因是window平台下Visual Studio较Qt虽然庞大,但是还是有开发调试方便的优势,因此主流的开发环境还是MSVC。但有些程序一开始为了跨平台开发于Qt之上,又想继续在VS中开发,于是需要这种开发环境的转换。
 
2.具体解决方法
qmake生成平台兼容的项目文件(*.pro),以及针对具体平台的Makefile文件和工程文件。
 
生成可执行文件一般包括三步:
  • 生成一个以.pro后缀的文件,它用于指示该目录下的源文件、头文件等,可以在不同平台下通用。
 
      qmake -project
 
使用这个命令时要注意,qmake并不会将依赖库添加到*.pro中,在后面的Makefile执行时会报链接error。我们可以手动添加到*.pro中,例如:(红色字体为手动加入的依赖库)
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
CONFIG += debug
TEMPLATE = app
TARGET = HelloQt
INCLUDEPATH += .
 
# Input
HEADERS += mainwindow.h
FORMS += mainwindow.ui
SOURCES += main.cpp mainwindow.cpp
 
  • 根据“QMAKESPEC”指定的编译环境生成特定的Makefile文件。
set QMAKESPEC=win32-msvc2010 (在windows中,QMAKESPEC默认为win32-g++)
qmake -makefile [-unix][-win32] -tp vc
例如:
qmake -o Makefile HelloQt.pro
需注意的是,默认QMAKESPEC未设置情况下,会生成mingw所需的Makefile(好像nmake也可以执行)。但若想生成VS的工程文件(vs2008下*.vcproj,vs2010下*.vcxproj)时一定要设置该变量。
  • 如果采用MingW,接着输入make即可。假如采用微软那一套,则输入nmake。如果想生成VS工程文件执行
     qmake -tp vc
     
3.可能出现的错误:
  • 如果采用MingW,输入make可能会提示“make不是内部或外部命令……”的错误,
将mingw/bin添加到环境变量中,并且将mingw32-make.exe复制一份,命名为make.exe即可。
  • 如果采用微软那套,输入nmake可能会提示“qt cannot open input file qtmaind.lib”的错误,
需要根据特定的Visual Studio版本,编译Qt,生成相应的*.lib。
 
需要配置的环境变量:
path %path%;%QTDIR%\bin;
QMAKESPEC win32-msvc2010
QTDIR C:\QT\2010.05\qt
打印当前变量:echo %PATH%
set PATH=C:\Program Files\EasyPHP5.3.0\php;%PATH%
echo %PATH%