如何由.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.exePGArbeit.ui,点击确定;

moc类似,这样每次compile整个工程时,就会自动compile 出moc_和 ui_文件了,且自动放到目录:.\myfold

提示:在2.2后如果还没有建立子目录\myfold ,那么就关掉IDE, 重新启动sln就可以了。也就是要删除掉旧的.ncb文件。


原文地址:https://www.cnblogs.com/pamxy/p/2991508.html