Я начинаю новый проект с использованием C++ и OpenGL, чтобы создать простую игру и научить себя OpenGL. Я не хочу использовать GLUT и предпочитаю использовать SDL для создания окон и т. Д. Однако у меня много неприятностей с Makefile. В настоящее время, когда я печатаю сделать, я получаю этот ответ, когда я включаю $(LFLAGS) $(LDFLAGS)
в моем G ++ команды:C++/OpenGL - запуск нового проекта
g++-5 tetris.o -o tetris -std=c++14
Undefined symbols for architecture x86_64:
"_SDL_CreateWindow", referenced from:
_main in tetris.o
"_SDL_GL_CreateContext", referenced from:
_main in tetris.o
"_SDL_Init", referenced from:
_main in tetris.o
"_SDL_PollEvent", referenced from:
game_loop(SDL_Window*) in tetris.o
"_glewGetErrorString", referenced from:
_main in tetris.o
"_glewInit", referenced from:
_main in tetris.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [tetris] Error 1
и этот ответ, когда я не делаю
g++-5 -Wall -framework SDL2 tetris.o -o tetris -std=c++14
ld: framework not found SDL2
collect2: error: ld returned 1 exit status
make: *** [tetris] Error 1
Вот мой новый Makefile:
CC = g++-5
CFLAGS = -Wall -c -Wno-deprecated-declarations
LFLAGS = -Wall
LDFLAGS = -framework SDL2
LDLIBS= -lSDL2 -lglew -lGL
INCLUDES = -I/Library/Frameworks/SDL2.framework/Headers/
STD = -std=c++14
all: tetris
tetris: tetris.o
$(CC) $(LFLAGS) $(LDFLAGS) tetris.o -o tetris $(STD)
tetris.o: tetris.cpp
$(CC) $(CFLAGS) $(LDFLAGS) -o [email protected] tetris.cpp $(STD)
.PHONY: clean
clean:
rm tetris *.o
И заголовки часть моего файла .cpp:
#include <SDL2/SDL.h>
#include <GL/glew.h>
#include <unistd.h>
#include <iostream>
У вас есть 32-битная архитектура процессора или 64-битная? – Leos313
64-разрядная ОС X El Capitan. Просто любопытно, что нужно сделать в make-файле, чтобы все это странно исчезло. Это не помогает, что все функции в учебниках OpenGL устарели. –