【发布时间】:2013-07-22 05:59:06
【问题描述】:
我为 c++ 文件编写了一个简单的 makefile,但这是一个我不明白的问题。 我有 2 个文件夹
/src 用于 .cpp 文件
- main.cpp
- 检查 cpp
/include 用于 .hpp 文件
- check.hpp
我的 Makefile 看起来像这样
LIBS = -lsfml-graphics -lsfml-window -lsfml-system
CC = g++
VPATH = src include
CPPFLAGS = -I include
### Files ###
OBJ = main.o check.o
### Rules ###
all: sfml-app
sfml-app: $(OBJ)
$(CC) -o sfml-app $(OBJ) $(LIBS)
%.o: %.c
$(CC) -c $<
clean:
rm -rf *o $(OBJ)
如果我像这样使用我的 makefile,一切正常。 但是如果我将 %.o: %.c 更改为 %.o: %.cpp 他说
src/main.cpp:2:21: critical error: check.hpp: file or folder not found
即使它是一个 c++ 项目,写 .cpp 而不是 .c 是错误的吗?这让我有点困惑。为什么 .c 有效而 .cpp 无效。
感谢您的帮助:)!
【问题讨论】:
-
CC = g++- 错误 -
@H2CO3 实际上你需要这条规则,除非你重载自动链接规则(不要!)因为
make使用$(CC)进行链接,不是$(LD),至少在我的系统上(据我所知这很正常)。 -
您遇到编译错误。发布您的
main.cpp文件。main.hpp是否存在于正确的文件夹中? -
@KonradRudolph
CC在概念上(并且作为 GNU make 中的隐含规则)是 C 编译器。对于编译 C++,使用CXX。CC = g++错了。