0

だから、私は次のコードを持っています:

OBJ := $(addprefix 'obj_', $(basename $(notdir /build/common.mk)))

OBJ1は「obj_common」になりました

ifeq ($(OBJ),obj_common)
    @echo equal (**don't know how to format indent in this website..assume there is.**)
endif

ifeq は $(OBJ) を obj_common と比較できません。少なくともエコーはしませんでした...

(ただし、次のように addprefix 関数を削除すると:)

OBJ := $(basename $(notdir /build/common.mk))

だから今OBJ1は「共通」です

ifeq ($(OBJ),common)
    @echo equal
endif

このコードはエコーします。つまり、比較して等しいことを意味します。

変数を参照する必要があります$(OBJ_common)(この種の変数の大きなリストがあるため、手動で文字列を入力することはできません)が、addprefix 関数により、この文字列が文字列ではなくなります...誰か解決してください問題?私の質問が明確でない場合は、お知らせください。どうもありがとうございました。

4

1 に答える 1

1

さて、間違いは次のステートメントにあります:

OBJ := $(addprefix 'obj_', $(basename $(notdir /build/common.mk)))
so now OBJ1 is "obj_common"

実際、への最初の引数で使用した引用符が原因にOBJ1なります。'obj'_commonaddprefix

したがって、引用符がなくても正常に機能するはずです。

OBJ := $(addprefix obj_, $(basename $(notdir /build/common.mk)))

ヒント

スクリプトをデバッグするための使用warningと関数:error

OBJ := ...
$(warning so now OBJ1 is [$(OBJ1)])
于 2012-05-29T19:20:20.667 に答える