分类:
2007-07-29 03:13:55
配置好/root/.bash_profile 也就是配置好编译器,其配置过程如我前面的有一篇文章《关于QTE的》拿文章。里面有详细的介绍,(我只要补充的一点就是为了能使其工作,我们必须要重新启动一下系统。也可以不注销,直接运行下面命令 source /root/.bash_profile 就行啦),当我们把这一步工作做好了的话。我们就可以开始做下一步的工作,也就是写程序啦 ,
我先写的是helloworld.cpp 程序,如下,
#include
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc,argv);
QLabel *label=new QLabel(0);
QString string("Hello,world");
label->setText(string);
label->setAlignment(
Qt::AlignVCenter | Qt::AlignHCenter);
label->setGeometry(0,0,180,75);
label->show();
app.setMainWidget(label);
return (app.exec());
}
再写我的Makefile ,我前面有关于Makefile的程序,写的很详细,这里就不说怎么写的问题啦,程序如下:
INCL= -I$(QTDIR)/include
CFLAGS= -pipe -O2 -fno-strength-reduce
LFLAGS= -L$(QTDIR)/lib -L/usr/X11R6/lib
LIBS= -lqt -lX11 -lXext
CC=g++
helloworld: helloworld.o
$(CC) $(LFLAGS) -o helloworld helloworld.o $(LIBS)
helloworld.o:helloworld.cpp
clean:
rm -f helloworld
rm -f helloworld.o
.SUFFIXES: .cpp
.cpp.o:
$(CC) -c $(CFLAGS) $(INCL) -o $@ $<
说明一下下面的Makefile的变量,如下
INCL 定义头文件的路径名,他们被传送给了编译器告诉编译器到那里去寻找头文件,编译器总是在/usr/include路径下寻找标准头文件。
CFLAGS 定义传给编译器的选择项列表。-pipe 选项指示编译器在两个编译平台间传输数据时使用管道,而不是临时文件,-O2选项设置了一个相当高的最优化级别们 -fno-strength-reduce选项防此最优化过程缩减或者消除重复的变量。
LFLAGS 定义传给连接器的选择项列表,每个-L选项所设置的时包含一个或者多个库的路径。
LIBS 定义这个程序需要用到的库的名称列表,将会在LFLAGS指明的路径下寻找这些库。这些名称都将被扩展成库文件的名字,例如 ,-lqt将改变成libqt.so,而-lX11则成为libX11.so
CC 编译器名称
当你完成上面那些的时候也就只要make一下就可以看见啦,然后运行。/helloworld 就能看到 你的精彩啦,
另外介绍我一程序,就是一个控制的,不信就用一下我的例子,我先写qlcd.h
#include
#include
#include
#include
#include
#include
class MyMainWindow : public QWidget
{
public:
MyMainWindow();
private:
QPushButton *b1;
QLCDNumber *lcd;
QSlider *slider;
};
再写的是qlcd.cpp
#include
#include
#include
#include
#include
#include
#include "qlcd.h"
MyMainWindow::MyMainWindow()
{
setGeometry(100,100,300,200);
b1=new QPushButton("quit",this);
b1->setGeometry(10,10,80,40);
b1->setFont(QFont("Times",18,QFont::Bold));
lcd=new QLCDNumber(2,this);
lcd->setGeometry(100,10,190,180);
slider=new QSlider(Vertical,this);
slider->setGeometry(10,60,80,130);
connect(b1,SIGNAL(clicked()), qApp, SLOT(quit()));
connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));
}
再是main.cpp
#include
#include
#include
#include
#include
#include
#include "qlcd.h"
int main (int argc,char** argv)
{
QApplication app(argc,argv);
MyMainWindow w;
app.setMainWidget(&w);
w.show();
app.exec();
}
再是makefile
INCL= -I$(QTDIR)/include
CFLAGS= -pipe -O2 -fno-strength-reduce
LFLAGS= -L$(QTDIR)/lib -L$(KDEDIR)/lib -L/usr/X11R6/lib
LIBS= -lqt -lX11 -lXext
CC=g++
main: main.o qlcd.o
$(CC) $(LFLAGS) -o main main.o qlcd.o $(LIBS)
main.o:main.cpp qlcd.h
qlcd.o:qlcd.cpp qlcd.h
clean:
rm -f main
rm -f main.o
rm -f qlcd.o
.SUFFIXES: .cpp
.cpp.o:
$(CC) -c $(CFLAGS) $(INCL) -o $@ $<
好了,你make一下,就出来你想要的结果啦
呵呵。试试。很爽的哦 !