如何构建和安装 GLFW 3 并在 Linux 项目中使用它

新手上路,请多包涵

GLFW3

昨晚我工作很晚,试图从源代码构建 Linux 的 GLFW 3 包。这个过程花了我很长时间,总共大约3个小时,部分是因为我不熟悉CMake,部分是因为我不熟悉GLFW。

我希望这篇文章能让你摆脱我昨天遇到的困难!我想我应该写一个简短的文章,希望能节省你几个小时的生命……

感谢#glfw IRC 频道上的“urraka”、“b6”和“niklas”,我已经能够让 glfw 3.0.1 版正常工作。

事实证明,这不是一个简单的过程(当然不是对我来说,我不是专家),因为网络上没有太多关于 glfw3 的文档,特别是关于使用 CMake 设置它的文档。

我被要求将其分成一个问答部分,所以我已经这样做了,答案部分现在在下面。

您是 GLFW 的维护者,还是 GLFW 团队的成员?

如果 GLFW3 的任何维护者看到这个,那么我给他们的信息是,请在您的网站上添加“在 Windows、Mac OS X 和 Linux 上设置 GLFW3”部分!使用 GLFW 编写程序非常容易,因为在线文档非常好,快速浏览所有可用的类和模块,您就可以开始了。 这里 的一个测试项目的例子也很好。我发现的两个主要问题是,首先如何在我的系统上设置 GLFW3,其次如何构建 GLFW3 项目?对于非专家来说,这两件事可能还不够清楚。

编辑

今天简单看了一下(日期:2014-01-14),看起来 GLFW 网站自从我上次看以来已经发生了很大的变化,现在有一个关于编译 GLFW 和使用 GLFW 构建程序的部分,我认为这是新的。

原文由 FreelanceConsultant 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

2020 更新答案

现在是 2020 年(7 年后),这段时间我对 Linux 有了更多的了解。特别是在安装库时运行 sudo make install 可能不是一个好主意,因为这些可能会干扰包管理系统。 (在这种情况下 apt 因为我使用的是 Debian 10。)

如果这不正确,请在评论中纠正我。

替代建议的解决方案

此信息取自 GLFW 文档,但是我已经扩展/简化了与 Linux 用户相关的信息。

  • 转到主目录并从 github 克隆 glfw 存储库
cd ~
git clone https://github.com/glfw/glfw.git
cd glfw

  • 此时您可以创建一个构建目录并按照此处的说明进行操作( glfw 构建说明),但是我选择不这样做。以下命令似乎在 2020 年仍然有效,但 glfw 在线说明并未明确说明。
 cmake -G "Unix Makefiles"

  • 您可能需要在 (?) 之前运行 sudo apt-get build-dep glfw3 。我按照说明运行了这个命令和 sudo apt install xorg-dev

  • 最后运行 make

  • 现在在您的项目目录中,执行以下操作。 (转到使用 glfw 库的项目)

  • 创建一个 CMakeLists.txt ,我的看起来像这样

CMAKE_MINIMUM_REQUIRED(VERSION 3.7)
PROJECT(project)

SET(CMAKE_CXX_STANDARD 14)
SET(CMAKE_BUILD_TYPE DEBUG)

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)

add_subdirectory(/home/<user>/glfw /home/<user>/glfw/src)

FIND_PACKAGE(OpenGL REQUIRED)

SET(SOURCE_FILES main.cpp)

ADD_EXECUTABLE(project ${SOURCE_FILES})
TARGET_LINK_LIBRARIES(project glfw)
TARGET_LINK_LIBRARIES(project OpenGL::GL)

  • 如果您不喜欢 CMake,那么我很抱歉,但在我看来,这是让您的项目快速运行的最简单方法。我建议至少在基本水平上学习使用它。遗憾的是我不知道任何好的 CMake 教程

  • 然后做 cmake .make ,你的项目应该被构建并链接到 glfw3 共享库

  • 有一些方法可以创建动态链接库。我相信我在这里使用了静态方法。如果您比我知道的更多,请在下面的答案中评论/添加一个部分

  • 这应该适用于其他系统,如果不让我知道,如果我能够提供帮助

原文由 FreelanceConsultant 发布,翻译遵循 CC BY-SA 4.0 许可协议

第 1 步:使用 CMAKE 在您的系统上安装 GLFW 3

对于此安装,我使用的是 64 位的 KUbuntu 13.04。

第一步是从 www.glfw.org 下载最新版本(假设将来的版本以类似的方式工作),可能使用此 链接

下一步是提取存档,然后打开一个终端。 cd 进入glfw-3.XX目录并运行 cmake -G "Unix Makefiles" 你可能需要提升权限,你可能还需 要先安装构建依赖。为此,请尝试 sudo apt-get build-dep glfw sudo apt-get build-dep glfw3 _手动操作_,就像我使用 sudo apt-get install cmake xorg-dev libglu1-mesa-dev 所做的那样……您可能需要其他库,例如 pthread图书馆…显然我已经有了它们。 (请参阅下面为 g++ 链接器阶段提供的 -l 选项。)

现在您可以输入 make 然后 make install ,这可能需要您先输入 sudo

好的,您应该在最后三个 CMake 阶段获得一些详细的输出,告诉您构建了什么或放置在哪里。 (例如,在 /usr/include 中。)

第二步:创建测试程序并编译

下一步是启动 vim(“什么?!vim?!”你说)或你喜欢的 IDE/文本编辑器……我没有使用 vim,我使用了 Kate,因为我在 KUbuntu 13.04 上……无论如何,从 这里(页面底部)下载或复制测试程序并保存,退出。

现在使用 g++ -std=c++11 -c main.cpp 进行编译 - 不确定是否 需要 c++11 但我使用 nullptr 所以,我需要它…您可能需要将 gcc 升级到 4.7 版,或者即将发布的 4.8 版…关于 的信息。

如果您手动键入程序或试图“太聪明”并且某些东西不起作用,那么请修复您的错误……然后使用这个怪物链接它! g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi 所以你看,在“安装构建依赖项”部分,你可能还想检查你有 GL、GLU、X11 Xxf86vm(不管是什么)Xrandr posix-thread 和 Xi(不管是) 还安装了 开发 库。也许也更新您的图形驱动程序,我认为 GLFW 3 可能需要 OpenGL 版本 3 或更高版本?也许有人可以证实这一点?如果您获得对 dlclose 的未定义引用,您可能还需要添加链接器选项 -ldl -lXinerama -lXcursor 以使其正常工作(归功于@user2255242)。

而且,是的,我确实需要那么多 -l s!

第 3 步:您已完成,祝您有美好的一天!

希望这些信息是正确的,并且一切都对您有用,并且您喜欢编写 GLFW 测试程序。也希望本指南帮助或将帮助一些在未来像我昨天一样挣扎的人!

顺便说一句,所有标签都是我在 stackoverflow 上搜索的内容,以寻找不存在的答案。 (直到现在。)如果你和我处于相似的位置,希望它们是你所寻找的。

作者注:

这可能不是一个好主意。这种方法(使用 sudo make install)可能对您的系统有害。 (请参阅不要破坏 Debian)

理想情况下,我或其他人应该提出一个解决方案,它不仅仅将 lib 文件等安装到系统默认目录中,因为这些应该由包管理器管理,例如 apt ,这样做可能会导致冲突和破坏你的包管理系统。

有关替代解决方案,请参阅新的“2020 答案”。

原文由 FreelanceConsultant 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题