在 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/

10-11 18:34