2

GNUmakefile に、新しいシェルを呼び出し、新しいシェルのクリーンな状態で新しい make を呼び出すターゲット ルールを設定したいと考えています。

これを行う構文は何ですか?

私はこれを試しましたが、うまくいきませんでした:

.PHONY: setup
setup:
 shell cd myDir; make; cd ..

次のエラーが無限に繰り返されます。

make[1]: Entering directory `/disk4/home/user/parent'
shell cd myDir; make; cd ..
/bin/sh: shell: command not found
make[1]: Entering directory `/disk4/home/user/parent'
shell cd myDir; make; cd ..
/bin/sh: shell: command not found
[...]
4

3 に答える 3

2
(cd myDir ; make)

ペアレンは、独自の「現在のディレクトリ」を持つ新しいサブシェルを呼び出します。

于 2010-06-16T01:51:09.103 に答える
1

括弧は必要ありません。とにかく、レシピのすべての行は独自のシェルで呼び出されます。あなたのレシピには、シェルがコマンドとして実行しようとする余分なシェル文字列が含まれているようです (/bin/sh (make ではなくシェル) が文句を言いshell: command not foundます)。

また、この場合はmakeの-Cパラメータが便利です。

また、シェルからmakeを呼び出す場合は、${MAKE}マクロを使用してください。

.PHONY: setup
setup:
    unset MAKEFLAGS; ${MAKE} -C myDir
于 2010-09-23T16:49:51.547 に答える
0

これが機能するものです:

.PHONY: setup
setup:
 (cd myDir; env --unset=MAKEFLAGS make)
于 2010-06-16T04:19:48.287 に答える