CMake无法找到GLEW

时间:2016-10-26 20:27:21

标签: cmake glew

我已经读过这篇文章[1],但就我而言,CMake说它无法找到它。

我在Windows上,我的CMake模块文件夹中有一个FindGLEW.cmake文件,可能是在我安装CMake-3.6时放在那里。我在sourceforge上找到了GLEW并下载了Windows的zip文件。我解压缩并安装在C:\ Program Files \ glew中。当我创建自己的库并使用CMake构建和安装它们时,这是它们安装的默认位置,所以我很有信心我在这里很好。

我的CMakeLists.txt的片段是:

find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})

来自CMake的实际错误消息是:

CMake Error at C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find GLEW (missing: GLEW_INCLUDE_DIR GLEW_LIBRARY)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.6/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.6/Modules/FindGLEW.cmake:44 (find_package_handle_standard_args)
  source/CMakeLists.txt:5 (find_package)

FindGLEW.cmake是否可能被破坏?我看了几个其他的FindXXXXX.cmake文件,它们就像雪花一样,每一个都很独特。因此,我很难确切地说它遵循惯例。

[1] Linking GLEW with CMake

1 个答案:

答案 0 :(得分:2)

查看sources,该软件包正在寻找相对路径中的GLEW。使用不同的前缀搜索这些相对路径,包括变量CMAKE_PREFIX_PATH

的内容
  • <prefix>/include用于find_path,用于查找包含目录。
  • <prefix>/lib用于find_library用于查找库。

假设存在C:/Program Files/glew/includeC:/Program Files/glew/lib,请将C:/Program Files/glew添加到您的CMAKE_PREFIX_PATH变量中。类似的东西:

list(APPEND CMAKE_PREFIX_PATH "C:/Program Files/glew")
find_package(GLEW REQUIRED)

请注意以下几行:

include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})
可以使用imported target Glew::Glew

删除

add_executable(foo ...)
target_link_libraries(foo Glew::Glew)