c++ - CMake 找不到 GL/glew.h
问题描述
我在 pop_OS 下使用 CLion!20.04 并且目前正在尝试让 CMake 与 GLEW 一起使用,因为我想按照这些教程开始使用 OpenGL。我对 C/C++ 比较陌生,对 CMake 完全陌生。
我安装了libgl1-mesa-dev
, libglew-dev
, libglfw3
,libglfw3-dev
包,apt-get install
和glew.h
位于其他 GL 头文件旁边/usr/include/GL
。
当试图编译一个简单的程序时:
#include <GL/glew.h>
int main() {
return 0;
}
cmake 找不到头文件:
test/main.cpp:1:10: fatal error: GL/glew.h: No such file or directory
1 | #include <GL/glew.h>
| ^~~~~~~~~~~
我是否必须手动添加这些头文件CMakeLists.txt
才能让 cmake 找到它们?我尝试了十几种不同的建议,但都没有奏效。例如,我试过
cmake_minimum_required(VERSION 3.17)
project(test)
set(CMAKE_CXX_STANDARD 14)
find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
link_libraries(${GLEW_LIBRARIES})
target_link_libraries(test GLEW::GLEW)
但这会导致
CMake Error at /app/extra/clion/bin/cmake/linux/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
Could NOT find GLEW (missing: GLEW_INCLUDE_DIRS GLEW_LIBRARIES)
这是否是 CLion 的一个问题,我需要以不同的方式将库包含到我的项目中?还是我以错误的方式使用cmake?
解决方案
你的最后一次尝试几乎是正确的。
忘记include_directories
和link_libraries
命令。在进行现代 CMake 时,它所需要的只是add_executable(test main.cpp)
一个target_link_libraries(test PRIVATE GLEW::glew)
命令。目标GLEW::glew
(此处的情况很重要)捆绑了所有编译定义、包含目录、库以及编译和链接示例所需的进一步设置。
您的 CMakeLists.txt 现在看起来像这样:
cmake_minimum_required(VERSION 3.17)
project(test)
set(CMAKE_CXX_STANDARD 14)
find_package(GLEW REQUIRED)
add_executable(myTest main.cpp)
target_link_libraries(myTest PRIVATE GLEW::glew)
编辑:刚刚注意到,也可以使用 GLEW::GLEW。
推荐阅读
- android - ionic cordova build --prod --release 失败并产生错误
- docker - 无法从保存的 tar 映像加载 docker
- google-apps-script - 用表格替换搜索文本
- typescript - 如何让我的 Ionic 4 Typescript 路径正常工作?
- ruby-on-rails - Rails - 单面参考的“无法写入未知属性”
- json - 添加 JSON 数据对象时接收警报
- javascript - D3 Choropleth:TypeError:无法读取未定义的属性“县”
- c++ - 使用 CRTP 创建特征矩阵
- c++ - 如何修复此错误“错误:没有匹配函数调用 'getline(std::ifstream&, st::_cx11::string&,
- node.js - 是否有解释如何设置应用程序环境的 Node.js 文档?