Windows 10 Makefile设置变量问题

问题描述 投票:0回答:1

我试图让下面的make文件在Windows和Unix中都能工作。我遇到的问题是,标准的 <VAR> := <Value> 似乎不能在Windows中正常工作(我安装了 make 通过Cholocalety方式与 choco install 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 带用户自定义变量的路径

windows variables unix makefile
1个回答
0
投票

最主要的问题是,你不能设置 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 Windows32
© www.soinside.com 2019 - 2024. All rights reserved.