[解決済み] 1つのソースファイルからいくつかのターゲットを生成するGNU Makefileルール
2022-09-28 09:15:34
質問
次のようなことをやろうとしています。あるプログラムがあり、それを
foo-bin
というプログラムがあり、1 つの入力ファイルを受け取って 2 つの出力ファイルを生成します。これに対する馬鹿な Makefile ルールは次のようになります。
file-a.out file-b.out: input.in
foo-bin input.in file-a.out file-b.out
しかし、これでは
make
に対して、両方のターゲットが同時に生成されることを何ら伝えていません。を実行するときはいいのですが
make
を直列に実行する場合は良いのですが,もし
make -j16
などとすると問題が発生する可能性があります。
問題は、そのような場合のために適切な Makefile のルールを書く方法が存在するかどうかということです。 明らかに DAG を生成するでしょうが、どういうわけか GNU make マニュアルにはこのケースがどのように扱われうるか明記されていません。
同じコードを 2 回実行し、1 つの結果のみを生成することは、計算に時間がかかるため、問題外です (数時間と考えてください)。1 つのファイルのみを出力することもかなり難しいでしょう。なぜなら、データ ファイルの一部のみを処理する方法を知らない GNUPLOT への入力として、頻繁に使用されるからです。
どのように解決するのですか?
私は次のように解決します。
file-a.out: input.in
foo-bin input.in file-a.out file-b.out
file-b.out: file-a.out
#do nothing
noop
この場合、並列 make は a と b の作成を「直列化」しますが、b の作成は何もしないので、時間はかかりません。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン