Makefile 失败并出现错误 no rule to make target
Makefile fails with error no rule to make target
我正在努力创建一个有效的 make 文件。
我的结构
- root/Makefile
- root/src/main.cpp
- root/include/
我的代码
# 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
main' 的规则。停止。
编辑
在我的 main.cpp 中,我的 Makefile 可以在顶部找到这一行:#include "pugixml.hpp"
我认为这对你有用。
所有路径都是相对于 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
进入源文件夹。
我正在努力创建一个有效的 make 文件。
我的结构
- root/Makefile
- root/src/main.cpp
- root/include/
我的代码
# 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
main' 的规则。停止。
编辑
在我的 main.cpp 中,我的 Makefile 可以在顶部找到这一行:#include "pugixml.hpp"
我认为这对你有用。
所有路径都是相对于 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
进入源文件夹。