makefile-ifeq模拟

makefile-ifeq模拟,makefile,Makefile,我有很多不同的makefile的大来源。 现在我需要在这里添加一个小条件,在这里我可以检查行是否包含我想要的内容,然后我应该使用一些符号。 我知道ifeq必须放在0列。 但我无法仅针对这种情况更改全部来源。 如何在没有ifeq的情况下检查变量中的conatains? 我在define函数中有类似的内容: $(gen_cpp_objects): $(intermediates)/%.o: \ $(intermediates)/%$(LOCAL_CPP_EXTENSION) $(yacc_c

我有很多不同的makefile的大来源。
现在我需要在这里添加一个小条件,在这里我可以检查行是否包含我想要的内容,然后我应该使用一些符号。
我知道
ifeq
必须放在0列。 但我无法仅针对这种情况更改全部来源。
如何在没有
ifeq
的情况下检查变量中的conatains? 我在define函数中有类似的内容:

$(gen_cpp_objects): $(intermediates)/%.o: \
    $(intermediates)/%$(LOCAL_CPP_EXTENSION) $(yacc_cpps) \
    $(proto_generated_headers)  $(my_compiler_dependencies) \
    $(LOCAL_ADDITIONAL_DEPENDENCIES)
        $(transform-$(PRIVATE_HOST)cpp-to-o)
我需要将条件插入到
$(transform-$(PRIVATE\u HOST)cpp-to-o)

我想要这样的东西:

file:=somefile.someextension
define transform-cpp-to-o
@mkdir -p $(dir $@)
@echo "target $(PRIVATE_ARM_MODE) C++: $(PRIVATE_MODULE) <= $<"
ifeq ($(strip $<),$(file))
#Do something here
endif
$(hide) $(PRIVATE_CXX) \
        $(addprefix -I , $(PRIVATE_C_INCLUDES)) \
file:=somefile.someextension
定义转换-cpp-to-o
@mkdir-p$(dir$@)

@echo“target$(PRIVATE\u ARM\u MODE)C++:$(PRIVATE\u MODULE)您可以使用
if
函数作为内联条件:

$(if $(filter $(strip $<),$(file)), then-block, else-block)

$(if$(filter$(strip$)我如何将它与变量一起使用?我的意思是我可以将then block更改为类似
test:=testvar
的东西吗?您不能在then block或else block中分配变量。请将其更多地看作是C中的
?:
操作符。但是,您可以分配整个
$(if…)
表达式到变量。如果您使用
=
而不是
:=
,变量将以未展开的形式存储,并且每次使用变量时都会计算条件表达式。但是在这种情况下,ti如何为变量赋值,我的意思是如何在某个条件后赋值,而不使用ifeq您无法做到如果您需要根据条件以某种方式分配某个变量,则应为该变量分配一个条件表达式,该表达式可在两个选项之间进行选择。我的意思是,我想要这样的东西(伪代码),如果(a==“23”),则b=“good solution”否则b=“bad solution”