CMake 找不到 GLEW
CMake can't find GLEW
我读过这个 [1],但在我的例子中,CMake 说它找不到 glew。
我在 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
在 sources 中查找,程序包正在相对路径中查找 GLEW。这些相对路径使用不同的前缀搜索,包括变量的内容 CMAKE_PREFIX_PATH
:
<prefix>/include
for find_path
用于查找包含目录。
<prefix>/lib
for find_library
用于查找库。
假设 C:/Program Files/glew/include
和 C:/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)
我读过这个 [1],但在我的例子中,CMake 说它找不到 glew。
我在 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
在 sources 中查找,程序包正在相对路径中查找 GLEW。这些相对路径使用不同的前缀搜索,包括变量的内容 CMAKE_PREFIX_PATH
:
<prefix>/include
forfind_path
用于查找包含目录。<prefix>/lib
forfind_library
用于查找库。
假设 C:/Program Files/glew/include
和 C:/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)