条件包含在Qt项目文件/ qmake

时间:2017-11-07 20:41:49

标签: qt qmake

我正在创建一个全新的项目(一个守护进程),我想尽量减少它的依赖和工作。

在其他项目中使用的其中一个依赖项使用另一个库依赖项进行一些日志记录。我不希望登录我的守护进程。

更多......记录器库是一个子模块......我甚至不想将该子模块带入守护进程项目。

我正在考虑根据项目中的定义设置依赖项......类似于:

  

daemon.pro:

TEMPLATE = subdirs
SUBDIRS = Dependency \
          MyDaemon
CONFIG += ordered
DEFINES += NO_LOGGING
  

Dependency.pro

TEMPLATE = lib

NO_LOGGING {
} else {
LIBS += -L$$OUT_PWD/../Logger/ -lLogger
INCLUDEPATH += $$PWD/../Logger
DEPENDPATH += $$PWD/../Logger
}
  

dependency.cpp

#ifdef NO_LOGGING
// Redefine log function as a no-op
#else
#include "Logger.h"
#endif

听起来不错?它对我有用 - 但它不起作用。

似乎我无法将容器中的定义传递给内部项目...

有没有办法设置它?

另一种方法是仅仅针对少量的伐木......

Linux ...嵌入式...... Qt 4.7

1 个答案:

答案 0 :(得分:2)

像往常一样,您创建一个包含文件,然后在所有项目中使用它,如下所示:

  

mydemon.pri

features = logging other_feature # any name will do
  

mydemon.pro

include(mydemon.pri)
...
contains(features, logging) {
    # implement it here
} else {
    DEFINES += NO_LOGGING
}
  

dependency.pro

include(../mydemon/mydemon.pri, demon)
...
contains(demon.features, logging) {
    # use logging
} else {
    # no logging available
}