c++ - FreeBSD 上的 CMake 在/usr/local/include 中看不到 GL/gl.h

标签 c++ opengl cmake clang freebsd

我正在学习 OpenGL 并尝试使我的代码尽可能可移植。现在我设法在 Ubuntu Linux 14.04、Windows 7 和 MacOS 上编译了一个项目。但是我在使用 FreeBSD(PC-BSD 10.2 如果重要的话)时遇到了一些问题。这是一个代码示例:

运行后make (查看 README.md 中的所有构建步骤)clang 提示它找不到 <GL/gl.h>用于 ./glfw/include/GLFW/glfw3.h .但是GL/gl.h存在于/usr/local/include 目录中。

根据 Google 的说法,这是一个众所周知的问题。我试图手动编辑 CMAKE_CXX_FLAGSCMakeLists.txt ,修改环境变量等。没有任何效果。

你能帮帮我吗?

最佳答案

您执行 find_package(OpenGL REQUIRED) 并使用 ${OPENGL_LIBRARY}(应该是 ${OPENGL_LIBRARIES} ${OPENGL_gl_LIBRARY} 根据文档),但您不执行 include_directories(${OPENGL_INCLUDE_DIR})

FreeBSD 将所有 3d 方软件安装到 /usr/local 前缀中,许多开发人员认为他们需要的所有 header 都在 /usr 中。 Linux 也是如此,只是巧合。因此,如果您的软件使用 OpenGL,您应该在构建系统代码中明确提及其包含和库路径,而不是对它们的位置做出假设。

关于c++ - FreeBSD 上的 CMake 在/usr/local/include 中看不到 GL/gl.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32624212/

相关文章:

c++ - 特殊类成员函数

c - 是否有一个 malloc 实现在它自己的堆之外进行簿记?

c++ - 在 VS2012 中使用 CMAKE 将启用增量链接设置为 NO

c++ - intptr_t 有什么用?

c++ - Windows 服务不捕获关闭事件 C/C++

opengl - 即使变量只在顶点着色器上设置了三次,OpenGL 如何在片段着色器上插入变量?

c++ - 使用 QOpenGLFramebufferObject 时深度测试不起作用

linux - scp 后 C++ 可执行文件无法链接到共享库

cmake - 为什么即使使用 GIT_REPOSITORY,FetchContent 也会显示 "no download info"?

C++ 深度复制指向具有指针值的映射的指针