如何由.c或.cpp文件建立 与Qt相关的不同IDE平台的项目文件(.pro 和 .vcproj)和 中间文件夹 放置Generated Files
转自:http://blog.csdn.net/jtop0/article/details/5692481
我们一般应用Qt相关文件时,都是进入相应的IDE环境 编写code ,并在一打开(新建)的project中添加 头文件(.h)和 C/C++文件(.c/.cpp)。然而实际中,我们经常会遇到已经有 相关(用其他编辑器编写的,如Vi、geidt 和 记事薄等)的头文件(.h)和 C/C++文件(.c/.cpp)了,需要在IDE 环紧中compile 和debug,那么这就需要手动建立 与IDE对应的Project文件(如.pro、cbp 和 vcproj等 )。一般有两种方法来实现:
一、在IDE中新建一个project
1、新建一个project
2、添加 头文件(.h)、 C/C++文件(.c/.cpp)、ui 文件
3、在project 属性中添加 include path和lib 及 lib path
4、编译
有的IDE不能自动加入 产生的 中间文件(generated files) 到project中,则还要再有下一步
5、再手动加入moc_ 和ui_开头的文件到你的project中,再编译一次。 (如果当前目录没有这两个文件,就先单独用命令uic.exe 和 moc.exe 生成moc_ 、ui_开头的中间文件(见附),再添加到project中)
(怎样让IDE能自动产生中间文件(generated files)和中间文件夹呢?…..见附)
二、命令行新建一个project
这里主要以Vision Studio2008为例,其他IDE类似。现有四个文件main.cpp、PGArbeit.cpp 、 PGArbeit.h 和 PGArbeit.ui。
main.cpp的代码:
***************
#include <QApplication>
#include "PGArbeit.h"
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
PGArbeit dialog;
dialog.show();
return app.exec();
}
PGArbeit.h的代码L:
***************
#ifndef PGArbeit_H
#define PGArbeit_H
#include <QDialog>
#include "ui_PGArbeit.h"
class PGArbeit:public QDialog,public Ui::PGArbeit
{
Q_OBJECT
public:
PGArbeit(QWidget* parent=0);
~PGArbeit();
void DreiDAusstellung();
private:
QString Linksbildpath;
QString Rechtsbildpath;
bool Exeflag;
public slots:
void Linksbildeinstellung();
void Rechtsbildeinstellung();
void Entfernungsherstellung();
void Entfernungsherstellungandern();
void DreiDherstellung();
int OSGViewerstarten();
};
#endif
PGArbeit.cpp是PGArbeit.h相应功能函数的实现代码,PGArbeit.ui是 Qt Designer产生的xml类型文件,为节省空间就不必列出了。
实现步骤:(在dos 的命令行 单独用uic(方法一)
1、自己编写一个qmake的项目文件 (如:main.pro ) 其代码如下:
***************
“ SOURCES +=main.cpp PGArbeit.cpp
CONFIG +=qt ”
***************
2、分别用uic.exe和 moc.exe 产生中间文件“ui_PGArbeit.h”、“moc_PGArbeit.cpp”
3、执行qmake 产生相应的makefile文件
4、用qmake产生VC2008的vcporj 文件
5、用VC2008打开vcporj 文件,在其中添加“ui_PGArbeit.h、moc_PGArbeit.cpp、PGArbeit.h”等文件,并同时在vcporj 文件(main.vcproj )的属性中添加其他(如:Opencv 、OSG) include path 和lib 及 lib path,(Qt的已经自动添加了)
6、编译OK
2---4步可以用一个批处理文件代替:
Arbeit.bat 其代码如下:
***************
C:
cd/TDDOWNLOAD/PG
uic PGArbeit.ui -o ui_PGArbeit.h
moc PGArbeit.h -o moc_PGArbeit.cpp
qmake
qmake -tp vc -o main.vcproj main.pro
***************
其实:步骤1 只是检查确认 项目文件main.pro的内容,实际中可以放到 步骤3后check。
实现步骤:(在dos 的命令行 不单独用uic(方法二)
1、自己编写一个qmake的项目文件 (如:main.pro ) 其代码如下:
***************
“HEADERS +=PGArbeit.h
SOURCES +=main.cpp PGArbeit.cpp
FORMS =PGArbeit.ui
CONFIG +=qt”
***************
2、执行qmake 产生相应的makefile文件
3、用qmake产生VC2008的vcporj 文件
4、用VC2008打开vcporj 文件,在vcporj 文件(main.vcproj )的属性中添加其他(如:Opencv 、OSG) include path 和lib 及 lib path,(Qt的已经自动添加了)。注:第1步代码 经 qmake后会自动在vcporj 文件(main.vcproj )中 加入ui_PGArbeit.h、moc_PGArbeit.cpp两个中间文件。
5、编译OK
2---3步可以用一个批处理文件代替:
Arbeit0.bat 其代码如下:
***************
C:
cd/TDDOWNLOAD/PG
qmake
qmake -tp vc -o main.vcproj main.pro
***************
上述方法,就可以产生相应的project 文件了。
特别注意:批处理文件 只需要第一次的时候执行一次,建立了project文件后,就不需要再执行了。否则,设置了属性(include path、lib、 lib path)的vcporj 文件(main.vcproj )又得从新设置了。
附图:方法一 运行结果
附:ui_ 和 moc_ 文件的生成方法:
1、 DOS命令行的方法:
如 “ > uic PGArbeit.ui -o ui_PGArbeit.h
> moc PGArbeit.h -o moc_PGArbeit.cpp”
2、 IDE 中属性设置方法:2.1 产生的中间文件直接放到当前目录
将PGArbeit.ui作为源文件添加到main.vcproj工程中,在PGArbeit.ui上点击右键->属性,在属性对话框中选择 自定义生成步骤->常规,在命令行一栏输入:uic PGArbeit.ui -o ui_PGArbeit.h,说明一栏输入:正在编译PGArbeit.ui ,在输出一栏输入:ui_PGArbeit.h,在附加依赖项一栏输入:uic.exe; PGArbeit.ui,点击确定;
moc类似,这样每次compile整个工程时,就会自动compile 出moc_和 ui_文件了。
注:也可以单独compile 出moc_和 ui_文件:在完成了上面的属性设置后,在PGArbeit.ui上点击右键->编译,就会在当前工程目录生成ui_PGArbeit.h文件;
2.2 产生的中间文件直接放到自定义文件夹。将PGArbeit.ui作为源文件添加到main.vcproj工程中,在PGArbeit.ui上点击右键->属性,在属性对话框中选择 自定义生成步骤->常规,在命令行一栏输入:uic PGArbeit.ui -o .\myfold\ui_PGArbeit.h,说明一栏输入:正在编译PGArbeit.ui ,在输出一栏输入:.\myfold\ui_PGArbeit.h (这一栏非常重要,它会让IDE自动产生目录:\myfold),在附加依赖项一栏输入:uic.exe; PGArbeit.ui,点击确定;
moc类似,这样每次compile整个工程时,就会自动compile 出moc_和 ui_文件了,且自动放到目录:.\myfold下。
提示:在2.2后如果还没有建立子目录\myfold ,那么就关掉IDE, 重新启动sln就可以了。也就是要删除掉旧的.ncb文件。