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

Conditional includes in Qt project file / 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

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

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
}