CMake找不到GLEW [英] CMake can't find GLEW
问题描述
我已经读过[1],但就我而言,CMake说它找不到毛病.
I've read this [1], but in my case CMake says it can't find glew.
我在Windows上,并且我的CMake模块文件夹中有一个FindGLEW.cmake文件,大概是在我安装CMake-3.6时放置的位置.我在sourceforge上找到了GLEW,并下载了Windows的zip文件.我解压缩并安装在C:\ Program Files \ glew中.当我创建了自己的库并使用CMake构建和安装它们时,这是它们安装的默认位置,因此我非常有信心在这里可以.
I'm on Windows and there is a FindGLEW.cmake file in my CMake modules folder, presumably put there when I installed CMake-3.6. I found GLEW on sourceforge and downloaded the zip file for Windows. I unzipped and installed in C:\Program Files\glew. When I've created my own libraries and used CMake to build and install them, this is the default location they are installed to so I am pretty confident I'm OK here.
我的CMakeLists.txt中的代码段是:
The snippet from my CMakeLists.txt is:
find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})
CMake的实际错误消息是:
The actual error message from CMake is:
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文件,它们就像雪花一样,每个雪花都很独特.因此,很难确定我是否遵循惯例.
Is it possible the FindGLEW.cmake is broken? I've looked at a couple of other FindXXXXX.cmake files and they are like snowflakes, each one pretty unique. So it's hard for me to say with any certainty that it's following convention.
[1] 将GLEW与CMake关联
推荐答案
Looking in the sources, the package is looking for GLEW in relative paths. These relative paths are searched using different prefixes, including the content of the variable CMAKE_PREFIX_PATH
:
-
<prefix>/include
,用于查找包含目录. -
<prefix>/lib
表示find_library
,用于查找库.
<prefix>/include
forfind_path
which is used to find include directories.<prefix>/lib
forfind_library
which is used to find libraries.
假设存在C:/Program Files/glew/include
和C:/Program Files/glew/lib
,请将C:/Program Files/glew
添加到您的CMAKE_PREFIX_PATH
变量中.像这样:
Assuming C:/Program Files/glew/include
and C:/Program Files/glew/lib
exist, add C:/Program Files/glew
to your CMAKE_PREFIX_PATH
variable. Something like:
list(APPEND CMAKE_PREFIX_PATH "C:/Program Files/glew")
find_package(GLEW REQUIRED)
请注意以下几行:
include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})
可以使用导入的目标
may be dropped using imported target Glew::Glew
:
add_executable(foo ...)
target_link_libraries(foo Glew::Glew)
这篇关于CMake找不到GLEW的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!