我已经读过这篇文章[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文件,它们就像雪花一样,每一个都很独特。因此,我很难确切地说它遵循惯例。
答案 0 :(得分:2)
查看sources,该软件包正在寻找相对路径中的GLEW。使用不同的前缀搜索这些相对路径,包括变量CMAKE_PREFIX_PATH
:
<prefix>/include
用于find_path
,用于查找包含目录。<prefix>/lib
用于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)