使用仅标头库的正确方法是啥?

Posted

技术标签:

【中文标题】使用仅标头库的正确方法是啥?【英文标题】:What's the proper way of using header-only library?使用仅标头库的正确方法是什么? 【发布时间】:2015-08-26 11:28:39 【问题描述】:

我对如何正确使用仅标头库感到困惑。谷歌搜索没有帮助,因为我没有找到任何关于使用仅标头库的信息。

所以我的问题是:我应该只是复制头文件并将它们粘贴到我的项目文件夹中并以这种方式使用它们,还是应该使用 C\C++ >> General >> Additional Include Directories 将它们链接到项目?

【问题讨论】:

只在源文件中包含头文件?如果您正确设置了头文件搜索路径,则无需复制任何文件。 如果您将标题放入,例如/ThirdParty/SomeLibrary/,那么在需要这些标题的文件中您只需输入#include "ThirdParty/SomeLibrary/SomeHeader.h" 做任何你需要做的事情,以确保三年后你仍然可以从源代码管理中签出项目并构建它。当然,复制文件往往会使这变得容易。但不是你会用 Boost headers 做的事情。 谢谢,伙计们!我想我最终会将标头复制到项目文件中,因为它更容易和更方便(在我看来)。 【参考方案1】:

我会说最好将文件复制到您的项目文件夹中。这样你的项目是自包含的。然后,您可以将它交给其他人,他将能够构建它而无需更改任何配置。

现在,如果您使用也具有仅标头库的 boost,那就另当别论了。 Boost 很容易获得,并且让您的项目依赖于 boost 问题较少。在这种情况下,我会将其添加到附加包含中。

【讨论】:

【参考方案2】:

你可以做任何一个,这确实是一个方便的问题。传统上,您会将它们包含在您的包含路径中,但您也可以将它们放入您的项目中。将它们包含在您的项目中可以使其更加独立,并保护您免受代码破坏库更改的影响,但也意味着您必须为每个项目的副本安装与库安全相关的更新。

【讨论】:

【参考方案3】:

我应该只复制头文件并将它们粘贴到我的项目中吗 文件夹并以这种方式使用它们,或者我应该将它们链接到项目 使用 C\C++ >> 常规 >> 附加包含目录?

我都不会说:-)。

我的建议是将目录添加到项目的配置属性/C++ 目录/包含目录文件夹中。这样,您可以确保在搜索可能具有该库旧版本的其他目录之前搜索该库的目录。此外,这允许从多个项目中对库进行单一引用。

【讨论】:

以上是关于使用仅标头库的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 node.js 中计算 Content-length 标头的正确方法是啥

使用 PHP 库的标准方法是啥?

“去获取”私有存储库的正确方法是啥?

NPM 打包分叉 Git 存储库的 BUILT 版本的正确方法是啥?

使用 APIRequestFactory 测试基于令牌的身份验证的正确方法是啥?

用 webpacker 导入第三方库最干净的方法是啥?