【问题标题】:How to include a library in my code using cmake?如何使用 cmake 在我的代码中包含一个库?
【发布时间】:2016-10-28 15:16:04
【问题描述】:

我尝试“制作”库 yaml-cpp,但不确定我做得对,但我该如何构建它? 在教程 (https://github.com/jbeder/yaml-cpp/blob/master/README.md) 中,它说要在构建目录中运行 cmake,但是 cmake 找不到 cmakelist 文件,所以我在源目录中执行了它,但是然后呢?如何构建它?

如果有人可以逐步让一个新手来获取库(或任何库),以便我可以将它包含在我的代码中,那就太棒了。

我使用的是 Windows 7,并使用终端(使用 Codeblocks MinGW gcc/g++)和 sublime text 3 编辑器进行编译。

编辑:我没有“制作”。我怎样才能得到这个?

【问题讨论】:

  • 你的意思是问如何使用CMake(我不明白这个问题是如何特定于yaml-cpp的)?基本上你所做的是运行cmake 命令(如果你在 build 目录中执行它,它将是 cmake ..),然后使用你使用的任何构建系统构建(可能是它的 make ?)
  • 我已经编辑了标题。我没有“品牌”...我如何获得它?
  • 如果你使用 MinGW,你应该有 mingw32-make

标签: c++ cmake yaml-cpp


【解决方案1】:

以下是分步指南: 出于这个答案的目的,我将使用 cmake gui 来突出显示几个关键点。

  1. 转到https://github.com/jbeder/yaml-cpp 并下载根库。
  2. 打开cmake gui并选择源目录<my project>/yaml-cpp-master

  3. 为构建选择一个目录。我称之为<my project>/yaml-cpp-master/codeblocks_build

  4. 按配置,然后检查所有值。

  5. 按下生成并等待它完成。

  6. <my project>/yaml-cpp-master/codeblocks_build中找到生成的codeblocks项目文件

  7. 像往常一样编译项目。

  8. 找到生成的 DLL 文件并将它们链接到您的项目。

您收到此错误的原因是因为 cmake 试图在教程中看到的新创建的目录 build 中查找源代码:

mkdir build
cd build

这是为了指定 cmake 在哪里构建它而不是从哪里构建。如果你想通过命令行使用它,你需要告诉 cmake 在哪里构建以及源代码在哪里。

然后,要从该库调用函数,您需要链接头文件(以 .h.hpp 开头的文件)和 DLL 库。

.cpp .c 等是实现的位置,但 .h .hpp 是定义的位置。

因此,当您包含这样的内容时:#include<something.h> 您将包含稍后由 .cpp 文件填充的定义,但是如果是库,则它们将由 .dll.o 填充

【讨论】:

  • 太棒了!这次真是万分感谢。在 7.“像往常一样编译项目”。 - 你能更具体一点吗?我通常使用 gcc file.cpp -o 文件。这行得通吗?
  • 它将在项目目录中生成一个自定义的makefile。您正在使用代码块,因此使用代码块打开它并单击构建/编译就足够了。只需确保您使用的编译器与您在 cmake 中指定的编译器相同。
  • 我会试试的!这是因为我尝试从终端做所有事情,但使用 IDE 构建可能会更容易
  • 是的,您可能想查看代码块在编译生成文件时运行的命令。但通常先让它与 IDE 一起工作,然后再看看它是如何工作的,这比单独使用终端更容易。我认为您将需要 mingw32-make.exe 然后使用生成的 makefile。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 2017-11-09
  • 2014-12-01
  • 2020-09-04
  • 1970-01-01
  • 2021-09-12
  • 2019-08-28
相关资源
最近更新 更多