1. ホーム
  2. shell

[解決済み] Makefile でスクリプトをソースにするには?

2023-03-26 02:03:11

質問

env vars を設定するスクリプトを makefile 内でソースする良い方法はないでしょうか?

FLAG ?= 0
ifeq ($(FLAG),0)
export FLAG=1
/bin/myshell -c '<source scripts here> ; $(MAKE) $@'
else
...targets...
endif

どのように解決するのですか?

質問されたことに答えるために はできません。 .

基本的な問題は、子プロセスは親の環境を変更することができないということです。シェルはこれを回避するために 新しいプロセスをフォークしない ときに source を実行するのではなく、単にシェルの現在のインカネーションでこれらのコマンドを実行します。これは問題なく動作しますが make/bin/sh (またはあなたのスクリプトのためのどんなシェルでも)であり、その言語を理解しません(共通する部分は別として)。

Chris Dodd と Foo Bah が 1 つの可能な回避策に対処したので、私は別の方法を提案します (GNU make を実行していると仮定します)。

shell-variable-setter.make: shell-varaible-setter.sh
    postprocess.py @^

# ...
else
include shell-variable-setter.make
endif

面倒なことは練習として残しておく。