生成文件失败,错误没有规则来设定目标

Makefile fails with error no rule to make target

本文关键字:有规则 目标 错误 文件 失败      更新时间:2023-10-16

我正在努力创建一个有效的制作文件。

我的结构

  • 根/生成文件
  • root/src/main.cpp
  • 根/包含/

我的代码

# Define compiler
CC = g++
# Compiler flags
CFLAGS  = -g -Wall
# Build target executable
DIR = /src
INCLUDES = ../include
TARGET = main
all: $(TARGET)
$(TARGET): $(TARGET).cpp
    cd $(DIR) &
    $(CC) $(CFLAGS) -I $(INCLUDES) -o $(TARGET) $(TARGET).cpp
clean:
    cd $(DIR) &
    $(RM) $(TARGET)

我的错误

make: *** 没有规则使目标main.cpp', needed by主要'。 停。

编辑在我的主目录中.cpp我在顶部有这一行,旨在由我的 Makefile 找到: #include "pugixml.hpp"

我认为这应该适合您。

所有路径都是相对于生成文件所在的文件夹给出的。这意味着需要为源依赖项指定源文件夹。

# Define compiler
CC = g++
# Compiler flags
CFLAGS  = -g -Wall
# Build target executable
SRC = src
INCLUDES = include
TARGET = main
all: $(TARGET)
$(TARGET): $(SRC)/$(TARGET).cpp
    $(CC) $(CFLAGS) -I $(INCLUDES) -o $@ $^ 
clean:
    $(RM) $(TARGET)

对命令使用制表符(而不是空格)。

$@解析为目标(在本例中main)。

$^解析为所有依赖项(在本例中为src/main.cpp)。

无需cd到源文件夹中。