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

CMake on FreeBSD doesn't see GL/gl.h in /usr/local/include

我正在学习 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,这是一个众所周知的问题。我尝试在 CMakeLists.txt 中手动编辑 CMAKE_CXX_FLAGS,修改环境变量等。没有任何效果。

你能帮帮我吗?

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

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