zoukankan      html  css  js  c++  java
  • 如何由.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文件。


  • 相关阅读:
    Linux中配置别名
    Linux下的IO监控与分析
    RHEL6 Systemtap 安装笔记
    记一次多事件绑定中自己给自己设置的坑——click,dblclick,mousedown,mousemove,mouseup
    springboot打jar获取不到static静态资源文件问题
    关于springboot默认日志框架Slf4j+logback,自定义Appender问题
    spring 时间格式问题
    springboot 部署到tomcat,获取根路径问题。空格变为%20
    前后端分离 vue+springboot 跨域 session+cookie失效问题
    springboot 部署到tomcat中,项目总是重新部署
  • 原文地址:https://www.cnblogs.com/pamxy/p/2991508.html
Copyright © 2011-2022 走看看