Ваша проблема не связана с ifeq
;если вы удалите ifeq
и всегда включите одно или другое, вы увидите ту же проблему.
Во-первых, ваш синтаксис для включения файлов неверен.В директиве make include
нет круглых скобок вокруг имен файлов.Это должно быть просто:
include CentOS6_Makefile.mk
Во-вторых, вы не можете использовать команды процессора makefile, такие как include
, как часть рецепта (то есть с отступом от TAB).В рецепте make ВСЕ строки с отступом TAB передаются в оболочку как команды, запускаемые для создания цели, они не интерпретируются make (кроме как для расширения макросов).Кроме того, вы не можете включить какой-либо другой make-файл в середину рецепта: как только make начинает включать новый make-файл, это конец любого рецепта, который в настоящее время определяется.
Вы можете сделать это:
CENTOS_VERSION := $(shell rpm -E %{rhel})
ifneq ($(CENTOS_VERSION),6)
CENTOS_VERSION := 7
endif
include CentOS$(CENTOS_VERSION)_Makefile.mk
$(TARGET): $(TARGET).cpp
@echo "Building on CentOS $(CENTOS_VERSION)"
$(CC) $(CFLAGS) -o $(TARGET) $(TARGET).cpp