GNU‑MakeをPOSIX Make動作に制限する


12

Linuxでmake他のMakefileを編集または使用するときに、LinuxがMakefileでGNU‑Make固有の拡張機能の意図しない使用を拒否するようにする既知の方法はありますか?つまり、GNU‑Make makeがPOSIX指定されたとおりに動作し、GNU‑Make固有の拡張機能を拒否するように制限しますか?

.POSIX特別なターゲットは「によると、十分ではありません4.9特殊ビルトインターゲット名(gnu.org)」。manページでは、このためのコマンドラインオプションについては触れられていません。

別のmakeユーティリティを使用することもできます。

— 2018-10-19を更新—

私はまだ私の質問に直接答えを見つけることができますが、ここではこの問題、私はこの質問があった時点で存在していませんでした文書について、少なくとも文書である:  ポータブルのMakefileのAチュートリアル(nullprogram.com)


このリストを見ると、厳密なPOSIXのみのmakeがあったか、これまでにあったかは明らかではありません。そのため、代わりに、make問題の「他のMakefile」で使用することを意図したものから始める方が理にかなっています。また、GNUのことを言ってきた.POSIXターゲットはによると、十分ではありません」いくつかのドキュメントのあなたの読書が、あなたは少しのある実際の場合、このアップが実証されていないXYのproblemesqueを
ゴルディロックス2014

@ goldilocks、Xは、GNU‑Makeの仕様の習得が不足しているために(編集および変更のために)守りたい制限をチェックし、いくつかの仕様(存在する場合)の存在を認識できるようにするためのものです。アイチェックはエラーが発生しやすく、機械化できないため、エラーが発生しやすい自社製のgrep / sed / awkフィルターを使用して確認し、注意を引き付けます。
Hibou57

私もメイクウィザードではありませんが、それについて直接尋ねた方がいいのではないでしょうか。(もしそうなら、スタックオーバーフローがより良い場所かもしれません。)
goldilocks

君の言う通りかもね。ちなみに、投稿した後、最初にこの質問を削除してから、元に戻しました(場所がわかりませんでした)。私はあなたが示唆するように、後でスタックオーバーフローについて再度尋ねることがあります。ご心配をありがとう。
Hibou57

回答:


6

GNU make拡張を無効にする方法はないと確信しています。.POSIXターゲットは、互換性を向上させることができるが、そのような機能、独自のドットターゲットとして無効互換性が拡張されない%等の標的のパターンを、

POSIX機能に固執するmakeの実装については知りません。たとえば、MINIX、Solaris、OpenBSDにはすべて独自の拡張機能があります。少なくともこれらの4つの実装を使用してプログラムをビルドしようとすることができます(プログラムがこれらすべてのプラットフォームでビルドされると想定)。これにより、実際にはかなり優れた移植性が保証されます。makeVisual Studio のユーティリティを使用してWindowsを追加します。また、フリーでないOSを使用できる場合は、いくつかのUnixシェルツールのポートを追加します(十分な数のVSの無料バージョンがあると思います)。


3
Debian Linuxでは、pmakeメイクファイルの移植性のテストに使用しています。NetBSDのmakeフレーバーであると主張しています。(Debianの新しいバージョンではbmake。)
Palec '17 / 10/17
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.