Mac - OpenGL - glew not found
Asked Answered
L

2

6

basically i try to figure out why compiler complains about missing glew-library:

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

My setup:

brew list:

glew
glfw
glm

In /usr/local/include directory:

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

and 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)

When i have a file in same directory called: File.cpp and i run:

make File

i get:

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

Can anybody explain why the above setup is wrong/damaged?

ps: os, el capitan

Lasala answered 12/12, 2016 at 19:8 Comment(5)
Are you using Xcode?Wolbrom
no, i just have my file systemLasala
make File: There you are trying to make a target that has no recipe in your makefile and being baffled by the built-in recipe that make falls back on. Much else is amiss with this makefile. Best learn the basics of working with GNU Make and GCC. Here is a fairly good beginner's tutorial. For authoritative documentation, here is the GNU Make Manual and here is the GCC manualTipstaff
I have this issue as well with xcode. How did U solve it? I do not have an #include<GL/glew.h> anywhere that I can find to change.Tumbleweed
You can use pkg-config, this is what I use in my Makefile FLAGS:=$(shell pkg-config --libs --static --cflags-only-I glew glfw3)Faultfinder
C
4

You should make sure your directory structure is correct.

For example, you described your directory structure for your includes like so:

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

This kinda looks like the default directory structures of the libraries as they exist when unpacked from the archive you download, so I'm going to refer to my directory structure as a reference:

Directory Structure

Now look at your error:

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

Unless there was a significant change to the directory structure between 1.13.0 and 2.0.0, it's quite clear that you're getting this error because the "Include" directory is a level lower than your #include statement is trying to access.

If you replace #include<GL/glew.h> with #include<glew.h>, your problem should be resolved.

Alternately, instead of having 3 include statements, reorganize your library and put all your headers in one place, then reference them all with a single reference to the primary Include directory.

Cerebrovascular answered 12/12, 2016 at 20:29 Comment(1)
Original post is on mac, this answer is for windows.Moisten
M
-2

GLEW is a nonstandard library that implements the whole OpenGL extension and modern profile entry point loading shenanigans. It's an optional thing you may add as dependency to your project, but it is not something that is part of the standard "OpenGL development environment".

So how do you get it? Well I've got some good news for you: You're developing for MacOS-X and with that OS it's not necessary to load OpenGL entry points at runtime. The MacOS-X OpenGL framework comes with everything you need.

So what you should do is conditionally remove GLEW from your project build.

Side note: You're referring to X11 in your build configuration. MacOS-X offers a X11 implementation, but this will not give you modern OpenGL or any kind of smooth API integration. You should definitely not use that.

Monarchist answered 12/12, 2016 at 20:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.