在 GNU Make 的 makefile 中,我使用这个习惯用法来测试文件是否存在:
static:
ifeq ($(wildcard $(FileName)),)
# do something when the file doesn't exist
else
# do something different when it does
endif
但它在 NMake (
fatal error U1000: syntax error : ')' missing in macro invocation
) 中不起作用。我怎样才能更换它?如果替换在两个构建系统中都有效,那将是完美的。 最佳答案
csharptest.net 的答案几乎是正确的,但它缺乏关于命令和指令之间缩进规则差异的微小细节:
static:
!if exists($(FileName))
@echo $(FileName) does exist!
#^^^ DO MIND THE INDENTATION HERE, a command shall fail otherwise!
#
!else
!error $(FileName) does not exist!
#^^^^^ !directives don't have to be indented, though.
#
!endif
奇怪的是,它可以是
exist
(在官方文档中给出)或 exists
以达到相同的效果。关于makefile - 在 NMake 中测试文件存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4470275/