我想在我的项目中使用range-v3库,但我不明白如何使用。installation description说:
这个库是只包含头文件的。你可以从github上的range-v3仓库获取源代码。要使用Range-v3编译,只需#include
你想要的单个头文件。
这是否意味着我可以复制和粘贴所需的头文件,并将文件路径添加到我的CMake文件?我有点困惑,因为我从来没有包括第三方库。
我想在我的项目中使用range-v3库,但我不明白如何使用。installation description说:
这个库是只包含头文件的。你可以从github上的range-v3仓库获取源代码。要使用Range-v3编译,只需#include
你想要的单个头文件。
这是否意味着我可以复制和粘贴所需的头文件,并将文件路径添加到我的CMake文件?我有点困惑,因为我从来没有包括第三方库。
3条答案
按热度按时间mctunoxg1#
注:请参阅hythis'回答更好的解决方案。
这是否意味着我可以复制和粘贴所需的头文件,并将文件路径添加到我的CMake文件?
基本上,是的。首先
git clone
到<path_to_range_v3>
。然后将这些行包含到CMakeLists.txt
中:字符串
5uzkadbs2#
我不知道为什么Evg建议他们这样做,我甚至不认为在2019年你被迫使用ranges-v3(see here, the file existed way before hand)创建自己的CMake接口。无论如何,不要使用Evg的解决方案,ranges-v3是一个 * 好 * 的头部库,为了让头部库成为好的库它必须提供CMake集成。
只有头文件的库并不意味着作者不提供CMake支持,或者甚至避免自己使用CMake。糟糕的作者会这样做,就像你在第一时间问这个问题时可能经历的那样。
要正确地与Ranges V3集成,请使用一个packagemanager(尽管有些包管理器会根据其自定义CMake文件的配置方式而将过程搞砸),如Conan或vcpkg,并与各自的CMake解决方案集成,或者将项目添加为git子模块(尽管您也可以git克隆它),然后在CMakeLists.txt中:
字符串
如果作者没有详细说明如何在CMake项目中使用他们的项目,那么很难确定库的实际目标,我不会责怪任何人发表关于它的SO帖子,这是一种痛苦。
一般来说,如果项目有一个CMakeLists.txt文件,它可能有静态库/子目录cmake集成,但 * 某些 * 库只有安装目标,因此在不编辑其CMakeLists.txt的情况下将其烘焙到源代码中时无法使用
要检查是否是这种情况,或者您是否可以实际使用目标,如果您找不到任何关于如何使用库的CMake文档(我找不到),请执行以下操作:
如果项目没有被配置为正确地用作子模块,否则将被用作静态库,提交问题或PR到给定的存储库,这是一个bug。
vjrehmav3#
如果使用的是Linux,还可以使用命令
sudo apt install librange-v3-dev librange-v3-doc
安装range-v3