3

現在、子フォルダーに含まれるライブラリが更新されるたびに再構築する必要がある親フォルダーにいくつかのアプリケーションがあるプロジェクトに取り組んでいます。親フォルダー内のアプリはメイクファイルでビルドされ、ライブラリはそれぞれのフォルダー内の別のメイクファイルでビルドされます。これは次のようになります。

  • 親ディレクトリ
    • アプリ1
    • app2
    • メイクファイル
      • libdir1
        • メイクファイル
      • libdir2
        • メイクファイル

私は現在、親ディレクトリのメイクファイルに対してこのようなことをしています

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 を呼び出すことです。

事前にご協力いただきありがとうございます。

4

1 に答える 1

1

ライブラリの Makefile が常に処理されるように、ダミーの依存関係を作成する必要があります。ここに良い例と説明があります: http://owen.sj.ca.us/~rk/howto/slides/make/slides/makerecurs.html

于 2013-06-09T16:20:12.927 に答える