生成文件失败,错误没有规则来设定目标
Makefile fails with error no rule to make target
我正在努力创建一个有效的制作文件。
我的结构
- 根/生成文件
- 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
到源文件夹中。
相关文章:
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- antlr 规则上下文是否可以独立于目标
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 朋友声明的复杂范围界定规则有什么意义?
- Cassandra C++ MacOS High Sierra上的驱动程序:make:没有规则来制作目标
- 可变参数模板在目标文件中有重复的符号?
- 没有规则来设定目标'/usr/lib/x86_64-linux-gnu/libboost_filesystem.so'
- 目标提升::<library>已经有导入的位置 + 链接错误
- 是否有可能编写新的叮当声现代化规则?
- 没有规则来制作目标.o,为什么?
- 在 decltype(auto) 的情况下,lambda 是否有特殊规则?
- 在VC++中从DLLMAIN内部调用D3D的CREATEDEVICE时,它会创建一个死锁(loaderlock?)。有没有办法克服这个问题?最终目标内
- 有没有办法让32位C 编译器遵循16位整数促销规则
- 有什么方法可以在 GNU Make 中使用变量作为规则和先决条件?
- 参数包扣减有哪些规则
- 开发C++应用程序,目标服务器有不同的std lib版本,最佳实践是什么
- 在 OpenGL 中,在保持良好帧速率的同时,VBO 中有多少个顶点的好目标是什么
- 无需规则即可将目标设为 .moc
- c++ 中是否有等同于目标 c 中的"block"的功能?
- GNU Make -在规则/目标中设置shell命令输出中的MAKEFILE变量