0
私はmakefileに堪能ではありません。私はRTFMを持っていて、だから見ましたが、私はこの単純な例で間違っていることはまだ得られません。このメイクファイル機能で何が問題になっていますか?
この作品:
TARGET = nim
ifeq ($(CONFIG),Release)
$(eval $(call LINK_RULE,$(TARGET)_unstripped,$(APP_SOURCES) Neonim.cc,$(LIBS),$(DEPS)))
$(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped))
else
$(eval $(call LINK_RULE,$(TARGET),$(APP_SOURCES) Neonim.cc,$(LIBS),$(DEPS)))
endif
$(eval $(call NMF_RULE,$(TARGET),))
TARGET = ttt
ifeq ($(CONFIG),Release)
$(eval $(call LINK_RULE,$(TARGET)_unstripped,$(APP_SOURCES) TTToe3D.cc,$(LIBS),$(DEPS)))
$(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped))
else
$(eval $(call LINK_RULE,$(TARGET),$(APP_SOURCES) TTToe3D.cc,$(LIBS),$(DEPS)))
endif
$(eval $(call NMF_RULE,$(TARGET),))
これは動作しません:
define bld =
SOURCES = $(APP_SOURCES) $(2)
ifeq ($(CONFIG),Release)
$(eval $(call LINK_RULE,$(1)_unstripped,$(SOURCES),$(LIBS),$(DEPS)))
$(eval $(call STRIP_RULE,$(1),$(1)_unstripped))
else
$(eval $(call LINK_RULE,$(1),$(SOURCES),$(LIBS),$(DEPS)))
endif
$(eval $(call NMF_RULE,$(1),))
endef
$(eval $(call bld,nim,Neonim.cc))
$(eval $(call bld,ttt,TTToe3D.cc))
は、彼らは同じではありませんか?どのようにこの関数を書くのですか?
まず、GNUのバージョンを使用している作りますか?第二に、「うまくいかない」とはどういう意味ですか?何が起こるのですか? – MadScientist
「eval」を使用する各行に、同じ行に「eval」ではなく「info」を追加します。これは、評価関数がどのように拡大しているかを正確に表示します。おそらく何かが予想通りに拡張しないでしょうか?私の推測では、いくつかの '$'文字は、eval関数でエスケープされているため、定義に倍加する必要があります。これがあなたの問題ならば、あなたは 'info'機能でそれを見るでしょう。 – Tim