VIM+qmake编译示例程序HelloQt出错问题的解决(文件名一定要使用.cpp,否则就会默认使用gcc编译,当然通不过)

时间:2024-07-02 17:36:50

之前看到很多初学Qt的Linux友们在使用qmake编译第一个HelloQt或者HelloWorld程序时报错,并且始终找不到原因。

前几天我也遇到了同样的问题,我用的是<精通Qt4编程>书上的例子,将代码用Vim输入之后qmake,再make结果报错N行

大部分是说什么什么为定义之类的,查了半天发现是只要把开头的几行#include<QtGui/..>里的文件包含进去就会出错,

但是不包含也不行,(后来发现网上不少人也在问这个问题,可是没说解决的),花了几个小时时间无果而终。

后来下载了QtCreatorQDevelop,重写程序,编译运行都正确,也就没深究下去了。

今天上网无意中看见一帖子,忽然想起自己原先写的程序(还好没删),一看恍然大悟。

以下是原帖地址:
http://www.linuxsir.org/bbs/thread54238.html

原帖的内容我也转载一下:
--------------------------------------------------------------------------------
SuSE下编译QT程序 
帖子1:
最近迷上了游泳和QT,活活。但是在SuSE下面建立了QT程序,并且用QT文档中的步骤自动建立的Makefile却死活不能编译。于是我第一反应就是升级QT到3.2,但是升级之后却还是不能编译,冥思苦想不得其解,于是就耐心下来看make之后的错误信息,并且跟踪到QT的代码里面看,发现报错的地方都是有C++关键词的地方,而且执行make之后的第一句是gcc -c ****,然后想起以前也遇到过,好象gcc只能编译C程序,要编译C++必须用g++,于是打开Makefile,把cc=gcc改成cc=g++,保存退出,结果QT程序就可以编译了 真是TNND
帖子2:
真是太惭愧了,这个问题的原因原来是因为我的源文件的后缀名不是cpp,然后Makefile就认为是C程序了,其实根本不需要修改Makefile就可以编译成功的。咳,自己还是太浮躁了,这么简单的问题没想到,平时用C用习惯了,转到C++连以前的基础都忘记了。
另外,在编译QT程序之前需要定义QTDIR这个环境变量,但是我用的是bash,在.profile里面加入了环境变量定义之后,却在登陆KDE之后丢失了QTDIR这个环境变量,需要我再定义一次,真奇怪啊。在SuSE上QTDIR=/usr/lib/qt3,如果按照QT文档安装的话,可能是QTDIR=/usr/local/.qt
--------------------------------------------------------------------------------

因为是使用Vim写的代码,保存的时候习惯性的存了.c的文件,结果系统默认使用gcc而不是g++,当然编译不了啦%>_<%。。

无语无语啦,把c文件都改成cpp再make一次,顺利生成可执行文件,而且感觉上这样编译的速度要比使用QtCreator或者QDevelop的速度要快不少,(QtCreator和QDevelop比的话,后者的编译速度要快一些,但是编辑功能更弱,个人感觉)。

总之总之,算是把问题的原因找出来了,也是一件开心的事哈。

http://blog.****.net/lynfam/article/details/4727163