Makefileに渡されるオプション(env変数ではない)の値を取得して使用する方法はありますか?例えば。コマンドラインで-jオプション(並列処理用)が渡された場合、どのようにMakefileの中でそれにアクセスできますか?Makefileでオプションの値を使用する
答えて
GNU Makeでは、ほとんどのオプションはMAKEFLAGS
(findstring
を使用)の値を調べることで検出可能です。その値は、通常、オプションの "標準的な" 1文字の文字列です。たとえば、Makeをmake --keep-going --question
とすると、MAKEFLAGS
は"kq"
になります。
ですが、 make -j
を実行する場合、MAKEFLAGS
には-j
が含まれます。 make -j2
を実行すると、MAKEFLAGS
には-j --jobserver-ids,3,4
が含まれます。
したがって、「並行していない」、「並行している」、「無制限」、「並行して制限されている」というケースを区別するのに十分な情報があります。最後のケースで<num>
が何であるかを知る方法はない、私は恐れている。
-j
のパラメータを使用する場合は、.MAKE.JOBS
を使用できます。一般的に、MAKEFLAGS
変数があなたの希望する変数です。
make
にはありません(FreeBSDのmake
で利用可能です)。
Michael Livshinが言うように、あなたはGNU make 4.2以上にアップグレードしない限り、あなたは知ることができません。
* The amount of parallelism can be determined by querying MAKEFLAGS, even when
the job server is enabled (previously MAKEFLAGS would always contain only
"-j", with no number, when job server was enabled).
基本的に-j2
がないだけで-j
以前のように、常にMAKEFLAGS
に表示されることを意味しますNEWSファイルから。
この値を変更しても効果はありませんが、それが興味のあるものであれば...並列化の量は、最初のmakeコマンドが呼び出され、他のすべてのmakeコマンドが使用されるときに設定されますその同じ値。並列化を完全に無効にするだけで、その量を変更することはできません。
ありがとうございます。私はそれを変更するのではなく、似たようなオプション(Goのgox)をサポートするコンパイラに渡してみました。 – talonx
makeはN個のジョブを使ってN個のGoxオペレーションを開始し、各GoxオペレーションはN個のスレッドで構築されるので、CPU上で "ダブルディップ"していることに気をつけてください...もっと "スクエアディッピング ":)。 – MadScientist
- 1. makefileでsetenvを使用する
- 2. makefileプロジェクトでqtcreatorを使用
- 3. Makefileディレクトリの使用
- 4. libsvmerror.codeのmakefileを使用するcygwin
- 5. Chart.jsとAngularJsの3値オプションを使用
- 6. サブフォルダを使ったMakefileの使用
- 7. Swiftオプション値の明確化の使用
- 8. mtouch --device = VALUEオプションに使用できる値は何ですか?
- 9. LinuxシェルでMakefileを使用するとエラーが発生する
- 10. 右クリックで選択ボックスのオプション値:オプションを使用せずに:選択
- 11. OS XでMakefile経由でSDL2を使用するには?
- 12. オブジェクト内のタグ選択でjQueryセレクターのオプション[値= ""]を使用
- 13. AngularJS:NG-オプションでオプションに設定する値
- 14. TensorflowでMakefileオプションを使用しているときにエラーが発生しました。
- 15. sedコマンドでmakefile変数を使用する
- 16. Perlからenv変数を設定し、Makefileで使用する
- 17. Makefile foreachループ内でifeq条件を使用する
- 18. pingで-mオプションを使用する
- 19. Formspreeで_nextオプションを使用する
- 20. オプションでngIfとngForを使用する
- 21. Javaでオプションを使用する8
- 22. SSRSオプションのヌル値用フィルタ
- 23. サブディレクトリにmakeを実行するmakefileでvimのmakeコマンドを使用する
- 24. 多くのサブディレクトリで使用される1つのMakefile
- 25. 変数リストをMakefileのターゲットとして使用するには?
- 26. オプションのチェックで使用されるタイプuitextfieldの非オプション式
- 27. Swiftでオプションの値(?)と結合値(!)を使用する場合はいつですか?
- 28. オプションのネゴシエーションを使用するTFTPプロトコル
- 29. オプションのパラメータを使用する
- 30. $ _GETを使用する以外のオプション
GNU makeでは.MAKE.JOBSは利用できません。 – talonx