CMake not finding GL/glew.h



我正在使用pop_OS下的CLion !20.04和我目前试图让CMake与GLEW一起工作,因为我想跟随这些教程开始使用OpenGL。我对C/c++比较陌生,对CMake完全陌生。

我用apt-get install安装了libgl1-mesa-dev,libglew-dev,libglfw3,libglfw3-dev包,glew.h位于/usr/include/GL中的其他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_directorieslink_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也可以使用。

@vre的答案是OK。我只添加了如何自己找到它。

首先,运行

cmake --help-module-list

并查找GLEW。在Linux下,您可以将此步骤简化为

cmake --help-module-list | grep -i Glew

其中-i代表"大小写不敏感匹配",因为我们通常不记得它是GLEW还是GLEW。一旦你知道了模块名,你就可以请求与这个模块相关的具体帮助:

cmake --help-module FindGLEW

答案就在那里。阅读和享受!

p。没有必要背这个答案。均可简化为cmake --help

最新更新