条件包含在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
}

依赖性.cpp

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

听上去很好?它对我有用 - 但它不起作用。

似乎我无法将定义从容器传递到内部项目......

有什么办法可以设置吗?

另一种选择是只应对少量的伐木......

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

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

我的恶魔

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
}

最新更新