use*_*616 5 windows mingw makefile environment-variables
makefile我正在使用以下内容mingw32-make
ifeq (%PROCESSOR_ARCHITECTURE%,AMD64)
ARCH ?= 64
else
ARCH ?= 32
endif
Run Code Online (Sandbox Code Playgroud)
由于某种原因PROCESSOR_ARCHITECTURE没有返回正确的值。我也试过$(PROCESSOR_ARCHITECTURE)了。$(%PROCESSOR_ARCHITECTURE%)不知道这里出了什么问题。
正如您在评论中发现并指出的那样,Windows 将设置PROCESSOR_ARCHITECTURE为x8632 位应用程序,即使它们实际上在 64 位操作系统上运行(我认为是出于应用程序兼容性目的)。
如果您希望 makefile 确定底层操作系统类型到底是什么,请首先检查环境变量PROCESSOR_ARCHITEW6432,这将告诉 32 位应用程序实际的操作系统架构。
如果PROCESSOR_ARCHITEW6432未设置,则回退到检查PROCESSOR_ARCHITECTURE。Windows 仅PROCESSOR_ARCHITEW6432在操作系统为 64 位且进程为 32 位时进行设置:
ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
ARCH ?= 64
endif
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
ARCH ?= 64
else
ARCH ?= 32
endif
$(info $(ARCH))
Run Code Online (Sandbox Code Playgroud)