繁体   English   中英

如何使用 CLion 和 CMake 在 Windows 上从 GitHub 将外部库包含在 C++ 中?

[英]How to include external library in C++ from GitHub using CLion and CMake on Windows?

我的任务是创建一个 C++ 程序,我们鼓励使用的库之一是 GLM,可在此处的 GitHub 链接上找到: https://github.com/g-truc/glm 我一直在努力弄清楚如何将这个库包含在我的程序中,但我无法弄清楚这个过程。 我是 C++ 和 CMake 的新手,我在查找时发现的所有内容都是为其他操作系统或平台量身定制的(我使用的是 Windows 10),或者我还不明白。 如果能帮助我阐明我需要采取的步骤,我将不胜感激。

现在,我只有一个简单的 Hello World 主文件和一个由 CLion 自动生成的 CMakeLists.txt 文件。 我的目标是能够编写类似“#include <mat4x4.hpp>”的内容,并访问库中的方法。 以下是我一直遇到的一些问题:

  • 我需要手动从 GitHub 下载这个库才能使用吗? (我假设是的,因为似乎没有 package 经理)
  • 如果是这样,我是否需要将其全部或部分复制到我的程序结构中? 我需要单独编译它并将编译后的文件添加到我的程序结构中吗?
  • 添加外部库时,是否需要将东西分类到“lib”、“include”和“src”文件夹中? 我是否需要将这些目录标记为库、源或其他? CLion 已经有一个小的“外部库”目录。 我把东西放在那里吗? (图片中的子文件夹由 CLion 添加)
    CLion 外部库
  • 一旦一切就绪,我的 CMakeLists.txt 文件应该如何才能正确链接这些库?

正如你所看到的,作为一个新手,我还不能真正确定总体流程是什么样的。 这是我第一次尝试的样子:(在这里,我将库下载为 a.zip,将其解压缩并将整个内容复制到 lib 文件夹中) 外部库尝试

似乎 CMake 能够找到 GLM,因为它打印了一个版本号。 但是在编写“#include”行时它仍然找不到库,所以我一定是在某处遗漏了一步。 非常感谢任何帮助。 如果您需要我提供更多信息,请尽管询问!

在朋友的帮助下,我设法解决了它,以供后人参考。 这是对我有用的设置。

我使用右侧栏上的发布页面从 GitHub 下载了库: GitHub 库发布

我提取了下载的 .zip,并将整个生成的文件夹放在我的项目结构中。 为此,我创建了一个“lib”文件夹(尽管我怀疑文件夹名称或结构并不像我最初想的那么重要)。 这是我的工作项目结构:
工作项目结构

如您所见,我也不再有单独的“src”文件夹,但我确信如果需要我可以添加一个。 这里的重要部分是每个文件夹级别都有自己的 CMakeLists.txt。 简而言之,项目根目录中的CMakeLists链接“lib”文件夹,lib文件夹中的CMakeLists链接“glm”文件夹。 glm 文件夹中的那个在我下载的库中,它已经处理了后续文件夹和文件的所有链接。 这是项目根目录中的 CMakeLists 的样子:
项目根目录中的 CMakeLists

第 7 行链接 lib 文件夹。 第 8 行从我创建的源文件(main.cpp,在第 5 行设置)创建了一个可执行文件。 第 9 行链接 glm 库和我的可执行文件。 这是 lib 文件夹中的 CMakeLists 的样子:
Lib 文件夹中的 CMakeLists

那里不多,但链接了 glm 子目录,然后它已经有一个名为 glm 的库,我可以在根 CMakeLists 中使用它。

完成所有设置后,我现在可以在我的 main.cpp 中成功使用“#include”命令,它会找到库:
成功的图书馆包括

希望我添加的任何其他库都可以遵循相同的过程。 如果其他人遇到同样的障碍,我希望这有助于澄清事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM