Makefile 给出错误,没有规则 G++ 的目标

Makefile giving error with No target for rule G++

在这里完成 Makefile 菜鸟。我不明白为什么会这样,但我认为是 whitespace/tab。我有这个 Makefile:

BUILD_DIR = build/debug
CC = g++
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_NAME = play
INCLUDE_PATHS = -Iinclude
LIBRARY_PATHS = -Llib
COMPILER_FLAGS = -std=c++11 -Wall -O0 -g
LINKER_FLAGS = -lsdl2

all: $(CC) $(COMPILER_FLAGS) $(LINKER_FLAGS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(SRC_FILES) -o $(BUILD_DIR)/$(OBJ_NAME)

它给出了这个错误: make: *** No rule to make target `g++', needed by `all'. Stop.

如果我用制表符将字符串移到底部,并且只在一行上使用 all: 而在另一行上使用字符串,它会给出:

Makefile:12: *** missing separator. Stop.

我认为 Python 对 space 很着迷。无法弄清楚我做错了什么。

您需要将命令换行:

all:
    $(CC) $(COMPILER_FLAGS) $(LINKER_FLAGS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(SRC_FILES) -o $(BUILD_DIR)/$(OBJ_NAME)

并确保它是用制表符缩进的,而不是 space

也不是python,是make

您也可以使用分号将依赖项与命令分开,如下所示:

all: $(SRC_FILES); $(CC) $(COMPILER_FLAGS) $(LINKER_FLAGS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(SRC_FILES) -o $(BUILD_DIR)/$(OBJ_NAME)