qt creator的配置文件关于qt库路径怎么始终加入vc的库路径?

本机开发环境 qt-creator:2.0.1 qt:4.7.2 vs6 vs2005

 

用qt-creator编译qt自带的例子时,遇到如下问题

 

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"../../include/QtCore" -I"../../include/QtGui" -I"../../include/phonon" -I"../../include" -I"../../include/ActiveQt" -I"../../include/phonon_compat" -I"tmp/moc/debug_shared" -I"." -I"../qmediaplayer" -I"e:/Program Files/Microsoft Visual Studio/VC98/atl/include" -I"e:/Program Files/Microsoft Visual Studio/VC98/mfc/include" -I"e:/Program Files/Microsoft Visual Studio/VC98/include" -I"d:/Program Files/Microsoft Visual Studio/VC98/atl/include" -I"d:/Program Files/Microsoft Visual Studio/VC98/mfc/include" -I"d:/Program Files/Microsoft Visual Studio/VC98/include" -I"." -I"../../mkspecs/win32-g++" -o tmp/obj/debug_shared/main.o ../qmediaplayer/main.cpp

In file included from e:/Program Files/Microsoft Visual Studio/VC98/include/yvals.h:4,

from e:/Program Files/Microsoft Visual Studio/VC98/include/xstddef:10,

 

可以看出qt的头文件中加入了vc的头文件路径。这个什么时候加进来的?

 

在windows上编译qt项目要有这几步:1 qmake -project (产生项目配置文件***.pro) 2:qmake (产生Makefile,Makefile.Debug, Makefile.Release文件) 3:mingw32-make (开始编译。。。) 4 运行qt程序

 

在上面四个步骤中vc的头文件加入配置应该是在1或者2步骤中,做个试验,删除Makefile,Makefile.Debug,Makefile.Release文件,重新编译,还是碰到这样的问题。难道是项目配置文件pro出问题。接着再做个试验,重新新建个项目,源文件qt自带的例子一样。重新编译通过。这样看来,qt自带的例子pro文件会导致Makefile文件把vc的库路径加进来。不过海需要来证实下,接着来试验,修改qt例子的pro文件跟我新建项目的pro文件一样,重新编译还是碰到相同的问题。这样,跟pro文件没有关系,也就是第一步骤没有关系,跟第二个步骤有广西。

这么推敲,应该跟Makefile文件怎么生成有关。下面是上面试验中新建项目的编译,从qt-creator打印的编译语句看出,调用qmake命令时产生了Makefile文件的生成,这里就是关键所在了。

Running build steps for project mediaplayer...

Starting: "e:/qt/2010.05/qt/bin/qmake.exe" E:/Qt/2010.05/mediaplayer/mediaplayer.pro -r -spec win32-g++

The process "e:/qt/2010.05/qt/bin/qmake.exe" exited normally.

Starting: "E:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w

mingw32-make: Entering directory `E:/Qt/2010.05/mediaplayer-build-desktop'

E:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug

下面是qt自带例子的编译部分输出。

Running build steps for project qmediaplayer...

Starting: "e:/qt/2010.05/qt/bin/qmake.exe" E:/Qt/2010.05/qt/demos/qmediaplayer/qmediaplayer.pro -r -spec win32-g++

The process "e:/qt/2010.05/qt/bin/qmake.exe" exited normally.

Starting: "E:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w

mingw32-make: Entering directory `E:/Qt/2010.05/qt/demos/qmediaplayer-build-desktop'

E:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug all

从两个项目的编译输出看不出会导致问题的产生。

 

但是可以肯定在qmake.exe命令出错,因为这条命令执行后,含有vc库配置路径的Makefile文件才生成。所以现在分析qmake这条命令:-spec win32-g++ 这个参数是指按照win32-g++目录下的相关文件生成Makefile文件,这些文件是makefile模板。那分析下这些文件。

qmake.conf文件里含有如下配置。

 

QMAKE_RUN_CC        = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CC_IMP    = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
QMAKE_RUN_CXX        = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CXX_IMP    = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<

INCPATH这个变量很可能导致vc库路径加进来的原因。还是继续做个试验:去掉INCPATH变量,编译qt自带的例子,遇到的问题不一样了,如下:

Starting: "e:/qt/2010.05/qt/bin/qmake.exe" E:/Qt/2010.05/qmediaplayer/qmediaplayer.pro -r -spec win32-g++

The process "e:/qt/2010.05/qt/bin/qmake.exe" exited normally.

Starting: "E:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w

mingw32-make: Entering directory `E:/Qt/2010.05/qt/demos/qmediaplayer-build-desktop'

E:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug all

mingw32-make[1]: Entering directory `E:/Qt/2010.05/qt/demos/qmediaplayer-build-desktop'

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_PHONON_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -o tmp/obj/debug_shared/main.o e:/Qt/2010.05/qmediaplayer/main.cpp

mingw32-make[1]: Leaving directory `E:/Qt/2010.05/qt/demos/qmediaplayer-build-desktop'

mingw32-make: Leaving directory `E:/Qt/2010.05/qt/demos/qmediaplayer-build-desktop'

e:/Qt/2010.05/qmediaplayer/main.cpp:42:17: error: QtGui: No such file or directory

 

从编译输出看出任何头文件都没有加进来,qmake.conf文件的incpath的确是影响含有vc路径Makefile生成的罪魁祸首。但是有一点:编译自己新建的项目为什么会没事呢?

 

现在主要分析incpath是怎么生成的?或者说什么时候vc库的路径是怎么加incpath变量里。

 

可惜在这里思路就开始断了。

 

不过还有折中的方法:记得上面做的试验吗?编译移植qt例子没有成功,却发现将build directory改成其他路径,再编译就成功了。

 

你可能感兴趣的:(qt creator的配置文件关于qt库路径怎么始终加入vc的库路径?)