0
パラレルmakeの場合、target:dependencyは1:1でなければならないので、実行順序は-jのないmakeと同じになります。最初にパラレルメイクで依存関係のない偽のターゲットを実行しますか?
.PHONY: makeDirectories
makeDirectories:
make -p /path-to-directory
このターゲットは、任意の依存関係を必要としませんが、並列メイクで最初に実行する必要がある: は、私は前に他のすべてのターゲットに実行したい依存関係はありません偽の目標を持っています。私が発見した 解決策は次のとおりです。
-include makeDirectories
動作します。しかし、PHONYターゲットmakeDirectories
が最初に実行されることを確認する唯一の方法ですか?
私は最初の例では、「何にでもマッチ」パターンルールと非常に慎重になります。これらは複雑さを増し、確かにmakeを遅くします。私はこれが単なる例であることを知っていますが、実際には意味をなさない: '%.o:%.c'のような単純なパターンルールは '.o'ファイルが' .c'ファイルを作成し、mkdirの必要はありません。作成されたディレクトリを必要とするかもしれないパターンルールは、 'dir /%。o:%.c'のようになりますので、' dir /%。o:%.c | dir'を明示的に指定してください。二次展開とmatch-anythingのルールは必要ありません。 – MadScientist
@MadScientist '$ {objdir} /%。o:$ {srcdir} /%。cc'のようなルールを持っていますが、通常' $ {srcdir} 'の下にあるディレクトリを再作成する必要があります。 $ {objdir} 'のようになります。実際のプロジェクトでは、ディレクトリに対する注文のみの依存関係が必要です。 –
@MadScientist私はmakefile内の特定のターゲットをマークする方法について考えていました。そのため、 'make'は自動的にターゲットのディレクトリを作成します。 makefileのディレクトリ作成に対処することは、一般的な迷惑です。 –