Search code examples
c++windowsopenglcmakeglew

Adding GLEW to project (CMake)


I want to link glfw and glew to my project for graphics programming.

Adding glfw was pretty straight forward, I followed the instructions on their website. Creating a window with glfw worked perfectly.

However, I can't see what's wrong with my CMakeLists.txt for adding GLEW. The program gives the error: "GL/glew.h: No such file or directory".

My CMakeLists.txt:

cmake_minimum_required( VERSION 3.5 )

project(Starting)

find_package( OpenGL REQUIRED )

set( GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE )
set( GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE )
set( GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE )

add_subdirectory( ${PROJECT_SOURCE_DIR}/GLEW/build/cmake )
add_subdirectory( ${PROJECT_SOURCE_DIR}/GLFW )

add_executable( Starting ${PROJECT_SOURCE_DIR}/src/main.cxx )

target_link_libraries( Starting glew32s glfw )

I've tried giving it the names GLEW, glew, glew32 instead but nothing changed. The library is downloaded from here: https://github.com/Perlmint/glew-cmake

If it has any importance, this is the batch file with which I run my CMakeLists.txt (located in a build folder inside my project source directory):

@echo off

cmake -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..

make all

Looking at OpenGL projects on github didn't help since almost all of them are using visual studio. It would be great if someone could tell me what I got wrong.


Solution

  • While Julia's suggestion will likely work, there is a find script included with CMake for GLEW, assuming you are using a new enough version, so you should be using that instead of including paths manually. Just add the following:

    find_package(GLEW 2.0 REQUIRED)
    target_link_libraries(Starting GLEW::GLEW)
    

    This will find GLEW on your system then both link with the necessary libraries and add the necessary include directories.