基本上我试图找出为什么编译器抱怨缺少glew-library:
fatal error: 'GL/glew.h' file not found
我的设置:
brew list:
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
我得到:
fatal error: 'GL/glew.h' file not found
有人可以解释为什么上述设置错误/损坏了吗?
ps:os,el capitan
答案 0 :(得分:1)
您应该确保您的目录结构正确。
例如,您描述了包含的目录结构,如下所示:
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目录的单个引用来引用它们。
答案 1 :(得分:0)
GLEW是一个非标准库,它实现了整个OpenGL扩展和现代配置文件入口点加载恶作剧。它可以作为项目的依赖项添加,但它不是标准&#34; OpenGL开发环境的一部分&#34;。
那你怎么得到它?好吧,我为你带来了一些好消息:你正在为MacOS-X开发,而在那个操作系统中,没有必要在运行时加载OpenGL入口点。 MacOS-X OpenGL框架提供了您所需的一切。
所以你应该做的是从你的项目构建中有条件地删除GLEW。
附注:您在构建配置中引用了X11。 MacOS-X提供了X11实现,但这不会为您提供现代OpenGL或任何类型的平滑API集成。你绝对不应该使用它。