1. ホーム
  2. shell

[解決済み] Makefile で子プロセスの環境変数を設定する方法

2022-03-12 12:21:28

質問

このMakefileを変更したいのですが。

SHELL := /bin/bash
PATH  := node_modules/.bin:$(PATH)

boot:
    @supervisor         \
      --harmony         \
      --watch etc,lib       \
      --extensions js,json      \
      --no-restart-on error     \
        lib

test:
    NODE_ENV=test mocha         \
      --harmony             \
      --reporter spec       \
        test

clean:
    @rm -rf node_modules

.PHONY: test clean

になります。

SHELL := /bin/bash
PATH  := node_modules/.bin:$(PATH)

boot:
    @supervisor         \
      --harmony         \
      --watch etc,lib       \
      --extensions js,json      \
      --no-restart-on error     \
        lib

test: NODE_ENV=test
test:
    mocha                   \
      --harmony             \
      --reporter spec       \
        test

clean:
    @rm -rf node_modules

.PHONY: test clean

残念ながら、2番目の方法はうまくいきません (ノードプロセスはまだデフォルトの NODE_ENV .

何が足りなかったのでしょうか?

解決方法は?

Make変数は、デフォルトでは、makeが呼び出すプロセスの環境にはエクスポートされません。 しかし、make の export を使えば、強制的にそうさせることができます。 変更してください。

test: NODE_ENV = test

をこれに変更します。

test: export NODE_ENV = test

(GNU make >= 3.77 の十分に新しいバージョンを持っていると仮定して)。