我有点被困在这里.我们有两个makefile(一个我无法改变的要求)
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
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为条件句中不支持自动变量的扩展.还有其他办法吗?
我通常利用条件函数:
SPECIFIC_FLAGS=$(if $(findstring $(CUSTOM_FLAG),TRUE),$(IF_TRUE),$(IF_FALSE))
Run Code Online (Sandbox Code Playgroud)
或者使用调用函数来定义我自己的函数:
debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)
%.o: src/$$(notdir %).c
@cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1136 次 |
| 最近记录: |