我正在努力使下面的make文件在Windows和Unix中都能工作。我遇到了一些麻烦,因为标准的<VAR> := <Value>在make中似乎不能正常工作(我通过choco install make的Cholocalety安装make)。我可以每次检查ifeq ($(OS),Windows_NT),但我宁愿传递一个内部变量。任何帮助都会很感激,因为我不知道如何搜索这个.
代码输出是:
Windows_NT
detected_OS: Windows
------------
Not-Windows代码如下:
#.RECIPEPREFIX:=> # This doesn't work either...
.PHONY: test
test:
ifeq ($(OS),Windows_NT) # is Windows_NT on XP, 2000, 7, Vista, 10...
$(eval DET_OS=Windows)
# DET_OS : =Windows
# DET_OS=Windows
else
$(eval detected_OS = nonWindows)
endif
@echo $(OS)
@echo detected_OS: $(DET_OS)
@echo ------------
# ifeq ($(DET_OS), Windows)
ifeq "$(DET_OS)" "Windows"
@echo Windows
else
@echo Not-Windows编辑:有人指出,这篇文章的部分内容缺失了,所以我在这里添加它是为了清楚。代码应该在代码的后面部分执行ifeq ($(DET_OS), Windows)路径。输出显示它沿着non-windows路径前进。我不确定我需要做什么才能让它与用户定义的变量一起沿着Windows路径前进。
发布于 2020-05-15 10:34:58
主要问题是不能在配方中设置make变量。在菜谱中设置时,它被认为是要运行的命令,而不是变量设置。除此之外,对我来说效果也很好:
> Get-Content Makefile
.PHONY: test
ifeq ($(OS),Windows_NT)
DET_OS := Windows
else
DET_OS := nonWindows
endif
test:
@echo $(OS)
@echo detected_OS: $(DET_OS)
@echo ------------
ifeq ($(DET_OS),Windows)
@echo Windows
else
@echo Not-Windows
endif输出:
> ..\make-4.3\WinRel\gnumake.exe
Windows_NT
detected_OS: Windows
------------
Windows
> ..\make-4.3\WinRel\gnumake.exe --version
GNU Make 4.3
Built for Windows32https://stackoverflow.com/questions/61815297
复制相似问题