如何访问 nmake 条件中的变量?

jww*_*jww 0 nmake environment-variables visual-studio

我在访问nmake Conditional中的环境变量时遇到问题。我已经尝试了以下方法,它们都会导致!IF. 我还尝试了所有==变体:

!IF $(PROCESSOR_ARCHITECTURE) = "x86"
LIB_SRCS = $(LIB_SRCS) rdrand.cpp
!ENDIF

!IF %PROCESSOR_ARCHITECTURE% = "x86"
LIB_SRCS = $(LIB_SRCS) rdrand.cpp
!ENDIF

!IF [$(PROCESSOR_ARCHITECTURE) = "x86"]
LIB_SRCS = $(LIB_SRCS) rdrand.cpp
!ENDIF

!IF [%PROCESSOR_ARCHITECTURE% = "x86"]
LIB_SRCS = $(LIB_SRCS) rdrand.cpp
!ENDIF
Run Code Online (Sandbox Code Playgroud)

例如,使用!IF $(PROCESSOR_ARCHITECTURE) = "x86"中的结果test.nmake(30) : fatal error U1023: syntax error in expression。第 30 行是!IF.

MSDN 的Makefile Preprocessing Directives页面是一个预告片,它没有告诉我如何形成表达式(或者我无法找到它)。

如何访问 nmake 条件中的变量?


如果我按照qxg的建议,那么块中的代码不会被执行:

!IF "$(PROCESSOR_ARCHITECTURE)" = "x86"
LIB_SRCS = $(LIB_SRCS) rdrand.cpp
!ENDIF
Run Code Online (Sandbox Code Playgroud)

事实上,打印"$(PROCESSOR_ARCHITECTURE)"显示!MESSAGE它应该匹配。将 a 放入XXX块中导致失败不会产生错误。


以下是变量的转储:

C:\Users\Test>nmake /P

Microsoft (R) Program Maintenance Utility Version 11.00.61030.0
Copyright (C) Microsoft Corporation.  All rights reserved.

MACROS:
...
PROCESSOR_ARCHITECTURE = x86
           OS = Windows_NT
...
Run Code Online (Sandbox Code Playgroud)

qxg*_*qxg 5

尝试

!IF "$(PROCESSOR_ARCHITECTURE)" == "x86"
Run Code Online (Sandbox Code Playgroud)