0

これが少し難解な場合は申し訳ありませんが、私のmakefileには、相対パスである変数$(BASE)があります。パスを1レベル上げる必要があります。したがって、「../../../ src」がある場合は、「../../src」が必要です。
Makeでこれを簡単に行う方法はありますか?

4

1 に答える 1

2

これを実行したいすべての値がで始まる場合は、BASE../

$(patsubst ../%,%,$(BASE))

任意のパスの最初のコンポーネント(つまり、a / b / c-> b / c)を削除するだけの場合は、もう少し作業が必要です。

space := $(empty) $(empty)
shift-list = $(wordlist 2,$(words $1),$1)
shift-path = $(subst $(space),/,$(call shift-list,$(subst /, ,$1)))

として使用します$(call shift-path,$(BASE))。パスにスペースがある場合、これは壊れますが、makeとにかく他の多くの理由でそれらを処理することは悪夢です。

于 2013-03-06T09:06:21.507 に答える