在 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:语法错误:宏调用中缺少“)”
)。我该如何更换它?如果替换可以在两个构建系统中工作,那就完美了。
最佳答案
Nmake 可以运行预处理器指令:
http://msdn.microsoft.com/en-us/library/7y32zxwh.aspx
条件可能会有所不同,但 Exists() 是其中之一:
http://msdn.microsoft.com/en-us/library/8t2e8d78.aspx
!IF EXISTS(foo.txt)
最后使用命令行 http://msdn.microsoft.com/en-us/library/wkxa7sac.aspx
!IF [cmd /C IF NOT EXIST "foo.txt" exit 1]
无论哪种方式,这都应该可以工作,使用上面的 !IF 是完整的示例:
!IF !EXISTS(foo.txt)
!ERROR Unable to locate foo.
!ELSE
!MESSAGE I Found foo!
!ENDIF
关于makefile - 测试 NMake 中的文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4470275/