Makefile失败,错误没有规则来制作目标

时间:2015-04-16 18:48:21

标签: c++ makefile

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

我的结构

  • 根/生成文件
  • 根/ 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)

我的错误

制作:***没有规则将目标main.cpp', needed by设为主要'。停止。

修改 在我的main.cpp里面,我在顶部有这一行,我的Makefile可以找到它:#include "pugixml.hpp"

1 个答案:

答案 0 :(得分:2)

我认为这应该适合你。

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

# 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进入源文件夹。