2017-11-07 17 views
0

私は全く新しいプロジェクト(デーモン)を作成しています。依存関係を最小限に抑えて作業したいと思います。条件付きQtプロジェクトファイル/ qmake

他のプロジェクトで使用されている依存関係の1つは、別のライブラリ依存関係を使用した一部のログです。私はデーモンにログインしたくない。

さらに...ロガーライブラリはサブモジュールです...私は、そのサブモジュールをデーモンプロジェクトに持っていきたいと思っていません。私は、プロジェクト内の定義に基づいて、依存関係を設定することを考えています

...のようなもの:

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の... ...いつものように4.7

+1

dependency.pro https://stackoverflow.com/questions/6662644/qt-passing-variables-to-subprojectsを参照してください。 ? – timday

答えて

2

Qtの、あなたには、ファイルを作成し、それを使用しますこのように、すべてのプロジェクト、中:

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 
} 

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