現在、子フォルダーに含まれるライブラリが更新されるたびに再構築する必要がある親フォルダーにいくつかのアプリケーションがあるプロジェクトに取り組んでいます。親フォルダー内のアプリはメイクファイルでビルドされ、ライブラリはそれぞれのフォルダー内の別のメイクファイルでビルドされます。これは次のようになります。
- 親ディレクトリ
- アプリ1
- app2
- メイクファイル
- libdir1
- メイクファイル
- libdir2
- メイクファイル
- libdir1
私は現在、親ディレクトリのメイクファイルに対してこのようなことをしています
all : app1 app2
libs = libdir1/lib1.a libdir2/lib2.a
.PHONY : $(libs)
$(all) : $(libs)
#do stuff to make the apps
libdir1/lib1.a :
$(MAKE) -c libdir1
libdir2/lib2.a :
$(MAKE) -c libdir2
私の問題は、「依存する」メイクファイルの1つが更新されない限り、親ディレクトリのメイクファイル内のアプリを再構築したくないということです。これが現在起こっている理由は、ライブラリが PHONY として宣言されているためであることはわかっています (したがって、常に再構築されます)。
したがって、私が望むのは、libdirs makefile のいずれかが実際に何かを実行する場合にのみ各アプリをビルドし、アプリをビルドする前に「何かを実行する」各 libdir の makefile を呼び出すことです。
事前にご協力いただきありがとうございます。