在Qt中包含.pro文件?

时间:2014-05-20 11:13:09

标签: qt unit-testing

我有一个包含很多includepath,源文件和头文件的项目。该项目作为独立的应用程序运行(它不是一个库)。

我想为该应用程序的新功能实现测试(Qt单元测试框架),为此,我要求(应用程序)项目的包含,源和头文件在(测试)项目中可用。

我已尝试将以下内容放在测试项目.pro文件中:

include(../application/app.pro)     #app.pro is the application project

然而,首先它抱怨main.cpp,如果我发表评论,那就是解析错误。 (评论main.cpp是不好的,因为我正在改变主项目,以便测试将编译)

我可以通过手动复制(应用程序)项目中的所有includepath,source和header字段来获得我想要的行为,但我正在寻找一种更清洁的方式。

这样做的最佳方法是什么?是否有可能无痛地将一个.pro包含在另一个中?

1 个答案:

答案 0 :(得分:3)

您应该执行两项修改:

  1. 将所有头文件和特定于构建的设置分离到* .pri文件中。这是您需要的,而不是包括* .pro。
  2. 将所有业务逻辑移动到库中,以便能够在单独的项目中对其进行测试。
  3. 例如,您将拥有build.pri:

    # build.pri
    TOPDIR = $$PWD
    INCLUDEPATH += . \
                   $$TOPDIR/include
    
    DEPENDPATH += $$TOPDIR
    
    INCLUDEPATH += $$TOPDIR/additional/libararies
    
    HEADERS += all.h \
               your.h \
               headers.h \
               of.h \
               interest.h
    
    QT      += xml
    # etc., etc.
    

    和core.pro

    # core.pro
    TEMPLATE = lib
    
    CONFIG  += dll thread create_prl
    QT      += network xml xmlpatterns sql
    
    include(../build.pri)
    
    HEADERS  += \
                headers.h
    
    SOURCES  += sources.cpp \
                many_of_them.cpp
    
    TARGET     = core
    # etc., etc.
    

    (请注意include(../build.pri)),然后将主项目app.pro作为subdirs项目,coregui作为应用程序的组件, test.pro具有义务core和尽可能多的测试。