使用 CMake 和 Visual Studio 2019 编译 GLEW?

Posted

技术标签:

【中文标题】使用 CMake 和 Visual Studio 2019 编译 GLEW?【英文标题】:Compile GLEW with CMake and Visual Studio 2019? 【发布时间】:2020-01-23 14:42:20 【问题描述】:

我尝试使用 CMake 和 Visual Studio 2019 编译(构建)GLEW 源代码以获取二进制文件。在目录(磁盘)C:\ 中,我创建了文件夹 GL 并在其中放置了解压缩的 glew-2.1.0。在C:\GL\ 中,我创建了文件夹build。因为我在3个文件夹中找到了文件“CMakeLists.txt”,

    C:\GL\glew-2.1.0\build\conan\test_package C:\GL\glew-2.1.0\build\cmake C:\GL\glew-2.1.0\build\cmake\testbuild

我在 CMake 的“Browse Source...”文本框中测试了所有 3 个路径。在“浏览构建...”文本框中,我粘贴了C:/GL/build。 在所有 3 项测试中,CMake 都做出了回应:

"CMake Error: The source 
"C:/GL/glew-2.1.0/build/cmake/CMakeLists.txt" 
does not match the source
"C:/GL/glew-2.1.0/build/cmake/testbuild/CMakeLists.txt"
used to generate cache.  Re-run cmake with a different source directory."

即“第二个路径中的文件 CMakeLists.txt 与第三个路径中的同名文件不匹配”。

【问题讨论】:

为什么不用 Visual Studio 来构建 glew? 亲爱的 fstam,请接受我对您的评论的感谢。我只知道用cmake和visual studio一起构建库源。第一步是由 CMake 处理,第二步是由 Visual Studio 处理。问候。 看看 TheCherno 的这个开源项目:github.com/TheCherno/Hazel 你可以在 youtube 上找到 TheCherno,他向你展示了如何构建 glfw 并很高兴使用 premake。我相信你可以用 glew 代替高兴并继续前进。您还可以在 youtube 上找到他,他会在其中提供详细说明。我与 TheCherno 没有任何关系,只是觉得它是一个很好的资源。 @Mr. fstam,请接受我非常感谢你给我的评论和你的建议。我对squareskittles先生的建议很满意。问候。 您可能希望将他的答案标记为解决方案,以供对该问题的功能参考。 【参考方案1】:

如果您更改运行 CMake 的***源目录,您应该首先删除您的 CMake 缓存(文件 > 删除缓存在 CMake GUI 中),并从头开始运行 CMake 以避免这些错误。

您是否尝试过 GLEW Github here 上的 CMake 说明?尝试从命令行运行这些命令:

> cd C:/GL/glew-2.1.0/build
> cmake ./cmake

虽然这偏离了典型的外源构建 CMake 习惯用法,但这就是 GLEW 打算创建构建系统的方式。所以在你的系统上:

源目录:C:/GL/glew-2.1.0/build/cmake 构建目录:C:/GL/glew-2.1.0/build

注意,GLEW 构建说明警告使用 CMake 构建此 repo:

cmake 构建主要由贡献者维护。由于有大量的用例,这是在尽最大努力的基础上维护的。欢迎请求请求。

因此,按照here 推荐的典型 Windows 构建方法,您可能会有更好的运气。

【讨论】:

亲爱的 squareskittles,请接受我非常感谢您立即回答。在 C:/GL/glew-2.1.0/build 中,cmake 响应:CMake 错误:源目录“C:/GL/glew-2.1.0/build”似乎不包含 CMakeLists.txt。指定 --help 使用,或者按下 CMake GUI 上的帮助按钮。,实际上这个文件夹不包含 CMakeLists.txt 文件。在第二个路径它响应: CMake 错误:源目录“cmake ./cmake”不存在。指定 --help 使用,或者在 CMake GUI 上按帮助按钮。,确实目录 cmake ./cmake 在 glew-2.1.0 中不存在。问候。 @GeorgeTheodosiou 提供的命令旨在从命令行运行。如果需要使用 CMake GUI,你的 source 目录应该是C:/GL/glew-2.1.0/build/cmake,你的 build 目录应该是C:/GL/glew-2.1.0/build。希望这可以澄清事情! 亲爱的 squareskittles,请接受我非常感谢您的有益建议。你希望在我的电脑和操作系统中工作的东西。 (Windows 10)。它也适用于二进制路径 C:/GL/glew-2.1.0/ 中的任何文件夹。例如 C:/GL/glew-2.1.0/binaries。问候。 先生。 squareskittles,请接受我非常感谢您在回答中的帮助编辑(首先删除您的 CMake 缓存(CMake GUI 中的文件 > 删除缓存))。我测试成功了。我没有尝试其他建议(命令行和 Github),因为您对 CMake GUI 的建议对我来说已经足够了。问候。 @GeorgeTheodosiou 我扩展了我的答案以包含我之前的评论,包括要使用的源和构建目录。我希望你能成功!【参考方案2】:

根据 squareskittles 先生对我对他的回答的评论的回答评论,我已经成功测试,正确的答案是容纳二进制文件的文件夹应该是 C:/GL/glew-2.1.0/build 或任何文件夹您已在 glew-2.1.0 中创建。虽然这是 glew 的特殊性。使用 GLFW,您可以在其外部创建可容纳的二进制文件夹。但是,根据我已经成功测试过的 Mr.squareskittles 在他的答案中的编辑,如果您删除 Cashe(在 CMake GUI 中,单击文件 > 删除 Cashe),您可以在 glew-2.1.0 之外创建容纳二进制文件夹。问候。

【讨论】:

以上是关于使用 CMake 和 Visual Studio 2019 编译 GLEW?的主要内容,如果未能解决你的问题,请参考以下文章

与 CMake 和 Visual Studio 2010 的链接错误

CMake、Ninja 和 Visual Studio 2019 重建一切

在 Visual Studio 2017 中使用 Cmake 构建 ssh.dll

Visual Studio 2017 - 为依赖项禁用 CMake

使用Visual Studio 2015,2017,CMake 3.10完全无法正常工作

CMake Project in Visual Studio 2019