質問

ここで立ち往生しています。 2つのメイクファイルがあります(変更できないという要件)

  • defs.mk:ソースファイル名&が含まれています。追加のコンパイルフラグ(標準フラグを除く)例:
C_FILES = c/src/main/rule_main.c
rule_main_OPTIONAL_FLAG = +w127
rule_main_DEBUG = TRUE
  • Makefile :すべてのルールが含まれています。

ここで、ファイル固有のフラグ(およびオプションのファイル固有のデバッグフラグ)を定義できるように機能を追加したい 例:

CUSTOM_DEBUG_FLAG = $($(basename $(notdir $@))_DEBUG) ## rule_main_DEBUG macro from defs.mk
ifeq ($(CUSTOM_DEBUG_FLAG),TRUE)
  do something
endif

ただし、自動変数の展開は条件内でサポートされていないため、これは機能しません。他の方法はありますか?

役に立ちましたか?

解決

通常、条件付き関数を利用します。

SPECIFIC_FLAGS=$(if $(findstring $(CUSTOM_FLAG),TRUE),$(IF_TRUE),$(IF_FALSE))

または関数を呼び出すを使用して独自の定義を行う関数:

debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)

%.o: src/$(notdir %).c
    @cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top