[解決済み】コマンドラインからmakeに追加の変数を渡す場合
質問
GNU Makefile にコマンドライン引数として変数を渡すことはできますか?言い換えれば、最終的に Makefile の変数になるような引数を渡したいのです。
どのように解決するのですか?
makefile の外から変数を設定するには、いくつかのオプションがあります。
-
環境から - 各環境変数は、同じ名前と値を持つ makefile 変数に変換されます。
また
-e
オプション(別名--environments-override
をオンにすると、環境変数が makefile で指定されたものを上書きします (ただし、指定されたもの自体がoverride
ディレクティブ . しかし、これは推奨されません。?=
の代入(条件付き変数代入演算子、変数がまだ定義されていない場合にのみ効果を発揮する)。FOO?=default_value_if_not_set_in_environment
環境変数から継承されない変数があることに注意してください。
-
MAKE
はスクリプト名から取得 -
SHELL
は、makefileの中で設定されるか、またはデフォルトで/bin/sh
(根拠: コマンドは makefile 内で指定され、それらはシェル固有である)。
-
-
コマンドラインから -
make
は、ターゲットに混じって、コマンドラインの一部として変数の割り当てを受けることができます。make target FOO=bar
しかし、その後 へのすべての割り当ては
FOO
は無視されます。 を使用しない限りoverride
ディレクティブ を代入してください。(効果は-e
オプションで環境変数を指定します)。 -
親Makeからの書き出し - Makefile から Make を呼び出す場合、通常はこのように明示的に変数の代入を記述するべきではありません。
# Don't do this! target: $(MAKE) -C target CC=$(CC) CFLAGS=$(CFLAGS)
代わりに、これらの変数をエクスポートすることがより良い解決策かもしれません。 変数をエクスポートすると、すべてのシェル起動の環境変数になり、これらのコマンドからのMakeコールは、上記で指定したようにこれらの環境変数を選択します。
# Do like this CFLAGS=-g export CFLAGS target: $(MAKE) -C target
をエクスポートすることもできます。 すべて 変数を使用することで
export
引数なしで
関連
-
[解決済み】Makefileにループを書くには?
-
[解決済み] argparseによるブーリアン値のパース
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] コマンドライン引数の読み方・処理方法は?
-
[解決済み] PowerShellでコマンドライン引数を処理する方法
-
[解決済み] コマンドライン引数にアクセスする方法を教えてください。
-
[解決済み] Python argparse 引数なしのコマンドラインフラグ
-
[解決済み] bashのコマンドライン引数へのアクセス $@ vs $*
-
[解決済み】rakeタスクにコマンドライン引数を渡す方法
-
[解決済み] Make: コマンドが失敗した後、どのように続行するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Makefileの中の.PHONYの目的は何ですか?
-
[解決済み】コマンドラインからmakeに追加の変数を渡す場合
-
[解決済み] 「複数のターゲットパターン」Makefile のエラー
-
[解決済み] make clean、make clobber、make distclean、make mrproper、make realcleanの違いは何ですか?
-
[解決済み] デバッグとリリースのビルドを行うためのmakefileを設定するにはどうすればよいですか?
-
[解決済み] Makefile での .PHONY の使用方法
-
[解決済み] makefileの "all "は何の略ですか?
-
[解決済み] PATH "文字列を表示するエコーファイルの作成
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み】OSがmakefileを検出する