CLion+CMake开发C++项目找不到glfw3包配置文件如何解决
你遇到的CMake报错核心是find_package无法定位glfw3的配置文件,存在两个明显的操作问题:
- Homebrew安装的glfw默认存放在brew专属的安装路径下,CMake默认检索路径不包含该目录,无法识别全局安装的glfw
- 你将glfw放入项目目录后,没有指定glfw配置文件的实际存放路径,你添加的
CMAKE_MODULE_PATH指向的项目cmake目录下并没有对应的glfw配置文件
解决方案
方案1:使用Homebrew全局安装的glfw
- 先在终端执行命令
brew --prefix glfw,获取glfw的安装前缀路径(Apple芯片设备默认前缀为/opt/homebrew/opt/glfw,Intel芯片设备默认前缀为/usr/local/opt/glfw) - 修改你的CMakeLists.txt,在
find_package(glfw3 3.3 REQUIRED)行之前添加如下配置:
# 替换为你执行brew --prefix glfw得到的路径 set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/opt/homebrew/opt/glfw")
或者直接指定glfw配置文件的所在目录:
# 路径结尾的/lib/cmake/glfw3是固定的,前缀替换为你自己的brew glfw安装路径即可 set(glfw3_DIR "/opt/homebrew/opt/glfw/lib/cmake/glfw3")
方案2:使用项目本地存放的glfw
- 先确认你放到项目中的glfw目录结构,找到包含
glfw3Config.cmake的目录,一般为glfw存放路径/lib/cmake/glfw3 - 在
find_package(glfw3 3.3 REQUIRED)行之前添加如下配置:
# 将路径替换为你项目中实际存放glfw配置文件的目录路径 set(glfw3_DIR "${PROJECT_SOURCE_DIR}/你的glfw存放路径/lib/cmake/glfw3")
如果你的项目里放的是glfw的完整源码,还可以用更简单的子模块集成方式,完全规避find_package的路径问题:
# 假设你把glfw源码放在项目根目录的third_party/glfw下,删除原来的find_package配置,替换为下面这行 add_subdirectory(third_party/glfw) # 后面直接保留target_link_libraries(open_gl glfw)即可
验证操作
修改完成后,先清空CMake缓存再重新加载:在CLion顶部菜单选择File -> Reload CMake Project,或者直接删除项目根目录下的cmake-build-debug文件夹后重新构建即可。
内容的提问来源于stack exchange,提问作者Luc Drenth
相关产品推荐
相关产品推荐

