已过时:不再感兴趣了。
我正在尝试使用 ifeq makefile条件验证并选择makefile宏的执行路径...
我在mingw中使用makefile和make的旧版本(3.79.1),但是不能修改构建系统以更新到最新的make版本。
我正在向用户函数发送参数,并根据这些参数,我想评估执行路径:
define CHECK_FILE
if ($(1),))
$(error Empty file provided to check! - $(1))
endif
ifeq ($(wildcard $(1)),)
$(error Invalid file provided for checking (file does not exist)! - $(1)!)
endif
ifeq ($(2),SPEED)
$(ROOT_PATH)/Tools/testSpeed.exe $(1)
else ifeq ($(2),ENDURANCE)
$(ROOT_PATH)/Tools/testStability.exe $(1)
else ifeq ($(2),MEMORY)
$(ROOT_PATH)/Tools/check_leaks.exe 8079 $(1)
else
$(error Bad test provided - $(2)!)
endif
endef
问题是我总是得到提供的#34;空文件来检查! - ......"错误..我做错了什么?
我可以t even add an echo in this macro.... it simply won
打印出任何东西!所以关于调试......
鉴于我目前的经验 - 我讨厌gnu make和msys / mingw与我身体的每一个细胞......我感谢任何帮助以避免将来讨厌它。
从几个地方调用宏,包括许多foreach循环:
someTArget:
@$(foreach outFile,$(INCLUDED_FILES),$(call CHECK_FILE,$(FILE_OUT_PATH)/$(outFile),MEMORY))
@$(foreach outFile,$(BUILT_BIN_FILES),$(call CHECK_FILE,$(FILE_OUT_PATH)/$(outFile),ENDURANCE))
@$(foreach outFile,$(BUILT_BIN_FILES),$(call CHECK_FILE,$(FILE_OUT_PATH)/$(outFile),SPEED))
在msys / mingw / make中使用MSDOS批处理文件不起作用,因为它没有看到参数%1 ...%n并且无法评估环境变量。
谢谢!
答案 0 :(得分:1)
最后的'enddef'应写成'endef'。 请参阅此处的GNU文档:GNU make - Defining
其他:在
行foreach external,$(INCLUDED_FILES),$(call CHECK_FILE,$(FILE_OUT_PATH)/$(outFile),MEMORY))
你指的是'outFile',但你的var是'外部'。