You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake中模块模式查找GLEW失败阻碍配置模式找到包的规范解决方法咨询

CMake中模块模式查找GLEW失败阻碍配置模式找到包的规范解决方法咨询

我正在Windows 10上用CMake构建一个C++项目,这个项目依赖PCL库和我自己开发的pcview包,而这两者又都依赖GLEW。顺带提一句,我没有编译PCL的可视化模块,理论上PCL其实不需要用到GLEW。我已经把PCL、pcview、GLEW和其他所有依赖包都配置妥当,find_package用Config模式可以轻松找到它们。

依赖关系如下:

project ---> PCL
   |          |
   |          |
   v          v
 pcview ---> GLEW

但是在处理项目的src/CMakeLists.txt时:

1. find_package( PCL REQUIRED )
2. find_package( pcview REQUIRED )
3. ...

出现了如下错误:

CMake Error at D:/CMake/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
  Could NOT find GLEW (missing: GLEW_INCLUDE_DIR GLEW_LIBRARY)
Call Stack (most recent call first):
  D:/CMake/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
  D:/packages/PCL/cmake/Modules/FindGLEW.cmake:38 (find_package_handle_standard_args)
  D:/CMake/share/cmake-3.30/Modules/CMakeFindDependencyMacro.cmake:75 (find_package)
  D:/packages/pcview/cmake/pcview-config.cmake:28 (find_dependency)
  src/CMakeLists.txt:2 (find_package)

我发现PCL自身附带了一个FindGLEW.cmake模块,所以当我的pcview-config.cmake调用find_dependency(GLEW)(find_package的一个变体)时,CMake会优先采用Module模式进行查找。如果Module模式只是静默失败,作为 fallback 的Config模式本来可以顺利找到GLEW,但问题是PCL提供的FindGLEW.cmake找不到GLEW后,调用了find_package_handle_standard_args,直接终止了整个查找流程,于是就出现了上面的错误。

是不是我哪里操作不当?用最规范、最专业的方式让CMake找到这个包应该怎么做?

当然我可以删掉PCL的FindGLEW.cmake,或者手动强制使用Config模式,或者搞些其他不太优雅的临时解决方案。但我认为PCL的配置应该是规范的,问题可能出在我这边。我想知道如何用最干净、最专业的方式把所有依赖衔接起来。


我觉得这些内容可能无关紧要,但总有人会问,所以还是附上我的CMake文件吧。

顶层CMakeLists.txt:

cmake_minimum_required( VERSION 3.12...3.30 FATAL_ERROR )

project( pcl-pcview VERSION 1.0 )

set( CMAKE_CXX_STANDARD 20 )
set( CMAKE_CXX_STANDARD_REQUIRED True )

add_subdirectory( src )

src/CMakeLists.txt:

find_package( PCL REQUIRED )
find_package( pcview REQUIRED )

set( LIBS ${PCL_LIBRARIES} pcview::pcview )


add_executable( pcl-pcview main.cxx )

target_link_libraries( pcl-pcview PRIVATE ${LIBS} )

备注:内容来源于stack exchange,提问作者Adayah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:23:07