【问题标题】:Makefile giving error with No target for rule G++Makefile 给出错误,没有规则 G++ 的目标
【发布时间】:2022-01-01 21:50:42
【问题描述】:

在这里完成 Makefile 菜鸟。我无法弄清楚为什么会这样,但我认为它是空格/制表符。我有这个 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 对空间很着迷。无法弄清楚我做错了什么。

【问题讨论】:

    标签: c++ c makefile


    【解决方案1】:

    您需要将命令放在一个新行上:

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

    并确保它使用制表符而不是空格缩进

    也不是python,是make

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

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

    【讨论】:

    • 不幸的是不起作用
    • Makefile:12: *** 缺少分隔符。停止。
    • 您是否将其设为制表符而不是空格?似乎stackoverflow将所有内容都转换为空间,因此您需要在粘贴后对其进行修复
    • 我知道...我只是说我认为 Python 对空间很疯狂,但这对空间/制表符等更疯狂
    • 是的...我把它做成了一个标签。这是一个 2 个空格的制表符,需要 4 个吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多