[解決済み] Makefile で複数行の文字列変数を作成することは可能ですか?
2022-05-24 22:37:47
質問
複数行の文字列 (例: リリース発表のメール本文) である makefile 変数を作成したいのですが、以下のようなものです。
ANNOUNCE_BODY="
Version $(VERSION) of $(PACKAGE_NAME) has been released
It can be downloaded from $(DOWNLOAD_URL)
etc, etc"
しかし、この方法を見つけることができないようです。 可能なのでしょうか?
どのように解決するのですか?
はい、このようにdefineキーワードを使って、複数行の変数を宣言することができます。
define ANNOUNCE_BODY
Version $(VERSION) of $(PACKAGE_NAME) has been released.
It can be downloaded from $(DOWNLOAD_URL).
etc, etc.
endef
厄介なのは、makefile から複数行の変数を取り出せるようにすることです。 もし、単に "echo $(ANNOUNCE_BODY)" を使うという当たり前のことをすれば、他の人がここに投稿したような結果になります。
しかし、変数の値をそのまま環境変数としてシェルにエクスポートし、シェルから環境変数 (メイク変数ではありません) として参照することができます。 例えば
export ANNOUNCE_BODY
all:
@echo "$$ANNOUNCE_BODY"
を使うことに注意してください。
$$ANNOUNCE_BODY
でなく、シェル環境変数の参照であることを示す
$(ANNOUNCE_BODY)
ではなく、シェル環境変数の参照であることを示します。 また、改行がシェル自身によって解釈されないように、変数参照の周囲には必ず引用符を使用してください。
もちろん、この特別なトリックはプラットフォームとシェルに依存する可能性があります。 私は、Ubuntu Linux で GNU bash 3.2.13 と共にこれをテストしました。
関連
-
[解決済み】LaTeXで変数を定義する方法はありますか?
-
[解決済み] Makefileの変数の初期化とエクスポート
-
[解決済み] PowerShellで変数が8文字以上であることをテストするにはどうすればよいですか?
-
[解決済み] GNU Makefile の変数割り当て =, ?=, :=, += の違いは何ですか?
-
[解決済み] 複数行の出力をBash変数に取り込む
-
[解決済み] bashスクリプトでtimestamp変数を作成する
-
[解決済み】コマンドの出力をMakefileの変数に代入する方法
-
[解決済み] 変数 "i "と "j "はなぜカウンタに使われるのですか?
-
[解決済み] makefile での複数行の bash コマンド
-
[解決済み] Makefile の括弧 $() と中括弧 ${} の違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】LaTeXで変数を定義する方法はありますか?
-
[解決済み] Makefileの変数の初期化とエクスポート
-
[解決済み] Rustタイプにおけるアンパサンドの意味は?
-
[解決済み] PowerShellで変数が8文字以上であることをテストするにはどうすればよいですか?
-
[解決済み】Dockerfileで変数を定義する方法は?
-
[解決済み】コマンドラインでansible playbookに変数を渡すにはどうすればよいですか?
-
[解決済み] 変数 "i "と "j "はなぜカウンタに使われるのですか?
-
[解決済み] Makefile で複数行の文字列変数を作成することは可能ですか?
-
[解決済み] Makefile の括弧 $() と中括弧 ${} の違いは何ですか?
-
[解決済み] バッチファイル内の変数から二重引用符を削除するとCMD環境に問題が発生する