Mac - OpenGL - glew未找到。

5
基本上我试图弄清楚编译器为什么会抱怨缺少glew库:
fatal error: 'GL/glew.h' file not found

我的设置:

brew列表:

glew
glfw
glm

在 /usr/local/include 目录中:

GL -> ../Cellar/glew/2.0.0/include/GL
GLFW -> ../Cellar/glfw/3.2.1/include/GLFW
glm -> ../Cellar/glm/0.9.8.3/include/glm

还有Makefile:

# OBJS specifies which files to compile as part of the project
OBJS = *.cpp

# CC specifies which compiler we're using
CC = g++

# INCLUDE_PATHS specifies the additional include paths we'll need
INCLUDE_PATHS = -I/usr/local/include -I/opt/X11/include

# LIBRARY_PATHS specifies the additional library paths we'll need
LIBRARY_PATHS = -L/usr/local/lib -I/opt/X11/lib

# COMPILER_FLAGS specifies the additional compilation options we're using
# -w suppresses all warnings
COMPILER_FLAGS = -w

# LINKER_FLAGS specifies the libraries we're linking against
# Cocoa, IOKit, and CoreVideo are needed for static GLFW3.
LINKER_FLAGS = -framework OpenGL -lglfw3 -lglew

# OBJ_NAME specifies the name of our exectuable
OBJ_NAME = main

#This is the target that compiles our executable
all : $(OBJS)
    $(CC) $(OBJS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME)

当我在同一目录下有一个名为: File.cpp 的文件并运行:

make File

i get:

fatal error: 'GL/glew.h' file not found

有人能解释一下为什么上述设置是错误的/损坏的吗?
附注:操作系统为El Capitan。

你在使用Xcode吗? - Jonathan H.
不,我只有我的文件系统。 - Creative crypter
make File: 在这里,您正在尝试制作一个在makefile中没有配方的目标,并对make回退到的内置配方感到困惑。此makefile还存在许多问题。最好学习使用GNU Make和GCC的基础知识。这是一个相当不错的初学者教程。有关权威文档,请参阅GNU Make手册,以及GCC手册 - Mike Kinghan
我在使用Xcode时也遇到了这个问题。你是怎么解决的?我找不到任何#include<GL/glew.h>可以更改。 - Mote Zart
你可以使用pkg-config,在我的Makefile中我就是这么用的。FLAGS:=$(shell pkg-config --libs --static --cflags-only-I glew glfw3) - just_a_dude
2个回答

4

你需要确保你的目录结构是正确的。

例如,你描述了你的includes目录结构如下:

GL -> ../Cellar/glew/2.0.0/include/GL
GLFW -> ../Cellar/glfw/3.2.1/include/GLFW
glm -> ../Cellar/glm/0.9.8.3/include/glm

这看起来像是从下载的存档中解压缩出来的库的默认目录结构,因此我将参考我的目录结构作为参考:

目录结构

现在看看你的错误:

fatal error: 'GL/glew.h' file not found
除非在1.13.0和2.0.0之间有重大的目录结构更改,否则很明显您会收到此错误是因为“Include”目录比您的#include语句尝试访问的级别低。
如果您将#include<GL/glew.h>替换为#include<glew.h>,则问题应该得到解决。
或者,不要使用3个include语句,重新组织库并将所有头文件放在一个地方,然后使用对主Include目录的单个引用引用它们。

1
原帖是关于Mac的,这个回答是针对Windows的。 - Cafn

-2

GLEW 是一个非标准的库,它实现了整个 OpenGL 扩展和现代配置入口加载花招。这是一个可选的东西,你可以把它作为依赖项添加到你的项目中,但它不是标准的 "OpenGL 开发环境" 的一部分。

那么你要怎么得到它呢?好吧,我有一些好消息告诉你:你正在开发 MacOS-X,而在这个操作系统上,不需要在运行时加载 OpenGL 入口点。MacOS-X 的 OpenGL 框架已经包含了你需要的一切。

所以你应该有条件地从你的项目构建中移除 GLEW。

顺便提一下:你在你的构建配置中引用了 X11。MacOS-X 提供了一个 X11 实现,但这不会给你带来现代化的 OpenGL 或任何平滑的 API 集成,你绝对不应该使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接