依存関係のためにアプリを起動する前にビルドする必要があるライブラリを持つ QT プロジェクト (c++) があります。私のqmakeファイルは次のことを行います:
TEMPLATE = MyApp
QMAKE_EXTRA_TARGETS += MyDependency
MyDependency.depends = FORCE
MyDependency.commands = make -C dependencies/MyDependency/
PRE_TARGETDEPS += MyDependency
DEPENDPATH += . \
dependencies/MyDependency/
dependencies/MyDependency/utilities
INCLUDEPATH += . \
dependencies/MyDependency/
dependencies/MyDependency/utilities
LIBS += -Ldependencies/MyDependency/dist
LIBS += -lmessageclient \
-lmessages \
-lssutilities \
-lboost_serialization \
-lcommon \
-lmng \
-lz \
-lrt \
-ldl
私のプロジェクトは非常に大きく、distcc を使用して分散コンパイルを利用しています。ただし、複数の distcc ノードで make を実行すると、プロジェクトは、MyDependency に依存するプロジェクトのコードに加えて、MyDependency のコンパイルを開始します。これにより、事前に依存関係を構築する必要があるコードの部分でコンパイル エラーが発生します。
qmake を実行してから、1 つの distcc ノードのみで後続の make を実行すると、最初に MyDependency がコンパイルされ、次にプロジェクトの残りのコンパイルが続行されます。また、これを使用して他のプロジェクトで機能するようにしました
CONFIG += ordered
TEMPLATE = subdirs
ただし、複数のサブディレクトリと .pro ファイルを持たずに構造を同じに保つことをお勧めします。複数のdistccノードを使用しながらこれを達成する方法はありますか?