【问题标题】:Adding GLEW to project (CMake)将 GLEW 添加到项目 (CMake)
【发布时间】:2018-03-22 16:54:15
【问题描述】:

我想将 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。 如果有人能告诉我我做错了什么,那就太好了。

【问题讨论】:

    标签: c++ windows opengl cmake glew


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您的问题是您忘记将 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 )
      

      【讨论】:

      • @AlexandruIca 没问题。如果有帮助,请将我的回答标记为正确。
      猜你喜欢
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2018-03-30
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多