用于简单C++;OpenGL程序 我试图为C++编写的OpenGL程序编写一个MaxFix.

用于简单C++;OpenGL程序 我试图为C++编写的OpenGL程序编写一个MaxFix.,c++,opengl,makefile,C++,Opengl,Makefile,现在,只有一个文件chess.cpp,但我希望将其他文件添加到项目中,因此我尝试创建一个makefile,可以根据需要扩展以处理新文件。我发现以下错误: clang:error:没有这样的文件或目录:“chess.o” clang:警告:-框架过量:“链接器”输入未使用 clang:warning:-frameworkopengl:“linker”输入未使用 make:**[chess.o]错误1 这是我创建的makefile。它是从我通常用于C程序的东西中借来的,所以如果它看起来很奇怪,那可能

现在,只有一个文件chess.cpp,但我希望将其他文件添加到项目中,因此我尝试创建一个makefile,可以根据需要扩展以处理新文件。我发现以下错误:

clang:error:没有这样的文件或目录:“chess.o”

clang:警告:-框架过量:“链接器”输入未使用

clang:warning:-frameworkopengl:“linker”输入未使用

make:**[chess.o]错误1

这是我创建的makefile。它是从我通常用于C程序的东西中借来的,所以如果它看起来很奇怪,那可能就是原因。我怎样才能为我的C++项目做这个工作?< /P>
CC = g++
CFLAGS = -c -g -Wall -Wextra
DEPS =
LDFLAGS = -framework GLUT -framework OpenGL

all: chess

%.o: %.cpp $(DEPS)
        $(CC) -c -o $@ $< $(CFLAGS)

chess.o: chess.cpp
        $(CC) -c chess.cpp chess.o $(LDFLAGS)

chess: chess.o
        $(CC) -o chess.o (LDFLAGS)

clean:
        rm chess
        rm *.o
CC=g++
CFLAGS=-c-g-Wall-Wextra
副总裁=
LDFLAGS=-frameworkglut-frameworkopengl
全部:国际象棋
%.o:%.cpp$(DEPS)
$(CC)-c-o$@$<$(CFLAGS)
chess.o:chess.cpp
$(CC)-c chess.cpp chess.o$(LDFLAGS)
国际象棋:国际象棋
$(CC)-o chess.o(LDFLAGS)
清洁:
rm国际象棋
rm*.o

有几个错误:

第一:

%.o: %.cpp $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)
即使如此,这条线还是有一个错误。它缺少输出文件选项
-o
。正确的语法是:

chess.o: chess.cpp
    $(CC) -c chess.cpp -o chess.o $(LDFLAGS)
最后:

chess: chess.o
    $(CC) -o chess.o (LDFLAGS)
此行缺少输入参数。Make不知道编译什么。此外,还将依赖项文件名用作输出参数。选项
-o
后面的文件名直接指定输出。另外,
(LDFLAGS)
处缺少一个
$
。正确的语法应为:

chess: chess.o
    $(CC) chess.o -o chess $(LDFLAGS)

您忘记了行中的
-o
选项:
chess.o:chess.cpp$(CC)-c chess.cpp chess.o$(LDFLAGS)
。谢谢。总有一天我会真正理解makefile。不知道为什么他们让我如此困惑。非常感谢您的帮助。您通常在编译阶段附加链接器标志(即cpp→ .o) ,因为当时没有任何联系。
chess: chess.o
    $(CC) chess.o -o chess $(LDFLAGS)