【发布时间】:2013-10-21 13:42:15
【问题描述】:
我试图避免在 C++ 文件的标头声明中使用相对路径。因此,我按照在线示例使用了 makefile。但我收到错误。请检查代码并帮助我解决此问题
COMPILER = g++
IDIR = ./include
CXXFLAGS += -I$(IDIR)
CFLAGS += -I$(IDIR)
EXEC = hello
OBJECTS = main.o factorial.o hello.o
all: $(EXEC)
(---- I had also used CFLAGS instead of CXXFLAGS below but the same result###)
$(EXEC): $(OBJECTS)
$(COMPILER) $(CXXFLAGS) $(OBJECTS) -o $(EXEC)
main.o: main.cpp ./include/functions.h
$(COMPILER) $(CXXFLAGS) -c main.cpp
factorial.o: main.cpp ./include/functions.h
$(COMPILER) $(CXXFLAGS) -c factorial.cpp
hello.o: main.cpp ./include/functions.h
$(COMPILER) $(CXXFLAGS) -c hello.cpp
错误:
make: * 没有规则使目标'include / functions.h" “main.o”需要创建。结束。
目录结构是
- main.cpp
- factorial.cpp
- hello.cpp
- MakeFile.mk
- +include (dir)
----->functions.h
main.cpp 包含 ----include "functions.h"---- 在头声明中
【问题讨论】:
-
这是一个纯粹的
make错误消息。该错误与任何 .cpp 或 .h 文件的内容无关。错误实际上只能来自 Makefile 的内容,以及其中命名的文件是否存在。因此,make声明它找不到文件include/functions.h。仔细检查它是否真的在这里,名称和大小写正确。 -
感谢您的回复。但是我使用的目录结构与帖子中提到的相同,并且我检查了拼写、匹配大小写,但一切似乎都如帖子中所示。我仍然得到同样的错误
-
只是检查一下,
+是+include目录名称的一部分吗? -
出于调试目的,您可以在 Makefile 中添加以下行:
./include/functions.h:和\ttouch $@。 (其中\t是一个制表符。)如果缺少,它将指示make创建一个空的include/functions.h 文件。 -
我只是保留 + 以将其标识为帖子中的目录。你能不能给我一次上面的命令。