将GLEW添加到项目(CMake)

时间:2018-03-22 16:54:15

标签: c++ windows opengl cmake glew

我想将glfw和glew链接到我的图形编程项目。

添加glfw非常简单,我按照他们网站上的说明进行操作。用glfw创建一个窗口工作得很好。

但是,我无法看到我的CMakeLists.txt添加GLEW有什么问题。程序给出错误:“GL / glew.h:没有这样的文件或目录”。

我的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 )

我试过给它起名字GLEW,glew,glew32而不是改变。 该库从此处下载:https://github.com/Perlmint/glew-cmake

如果它有任何重要性,这是我运行我的CMakeLists.txt的批处理文件(位于项目源目录中的构建文件夹中):

@echo off

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

make all

在github上查看OpenGL项目并没有帮助,因为几乎所有人都在使用visual studio。 如果有人能告诉我我的错误会很棒。

2 个答案:

答案 0 :(得分:2)

虽然Julia的建议可能会有效,但CMake for GLEW附带了一个查找脚本,假设您使用的是足够新的版本,那么您应该使用它而不是手动包含路径。只需添加以下内容:

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

这将在您的系统上找到GLEW,然后链接到必要的库并添加必要的包含目录。

答案 1 :(得分:1)

您的问题是您忘记将GLEW包含目录添加到项目中。您可以使用target_include_directoriesinclude_directories,唯一的区别在于您将其放在CMakeLists.txt和语法中。

我更喜欢target_include_directories,所以添加后你的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_include_directories(Starting PRIVATE
    ${PROJECT_SOURCE_DIR}/GLEW/include
)

target_link_libraries( Starting glew32s glfw )