条件包含在 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
}
我正在创建一个全新的项目(一个守护进程),我想尽量减少它的依赖和工作。
它的一个依赖项,在其他项目中使用,使用另一个库依赖项进行一些日志记录。我不想在我的守护进程中登录。
更...记录器库是一个子模块...我什至不想将该子模块引入守护程序项目。
我正在考虑根据项目中的定义来设置依赖关系...类似于:
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
}