Вот Makefile:
.PHONY: all
ifeq ($(OS),Windows_NT)
DETECTED_OS := Windows
else
DETECTED_OS := $(shell uname -s)
endif
$(info DETECTED_OS is set to '$(DETECTED_OS)')
При отступе с помощью вкладок он печатает
DETECTED_OS is set to ''
Но при отступе с 0 и более пробелами он печатает
DETECTED_OS is set to 'Linux'
Но если вы удалите первую строку .PHONY: all
, она напечатает
DETECTED_OS is set to 'Linux'
независимо от символов табуляции или пробелов.
Итак, первая версия не работает, потому что она не устанавливает DETECTED_OS
.Почему это так?
Моя версия:
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.