【问题标题】:Retrieve header-files in conan在柯南中检索头文件
【发布时间】:2020-06-28 19:32:15
【问题描述】:

通读柯南文档,我可以找到关于头文件的信息非常少。 重点似乎完全在于检索已构建的共享或静态库。 对于开发,我显然需要我使用的包的头文件。 我想出的一个解决方案如下(在 conanfile.txt 中)

[imports]
include, *.h -> ./include

它将 .h 文件从我的依赖项复制到我的本地包含文件夹中。 问题当然是这并没有区分不同的包,只是将所有文件放入包含文件夹中,没有子目录。 我真的不敢相信这是预期的做事方式。

我将如何检索我的依赖项的头文件,同时能够将它们放置在合理的路径中?

编辑:我刚刚读到可以在[imports] 设置中指定要从中复制的包。这变化很大,因为这意味着合理的目录结构是可能的。我的问题仍然存在,如果在 [imports] 中指定 .h 文件是检索头文件的首选方式。

【问题讨论】:

  • 大多数情况下,不需要复制标题。虽然开发包是从柯南缓存中使用的,而不是从本地用户文件夹中使用,这是通过generators 完成的(有一些用于流行的构建系统,您也可以创建自己的生成器)。 imports 功能主要用于将某些文件提取为 dll 以供最终部署(msi、deb 包等)。

标签: conan


【解决方案1】:

如果您希望每个包都复制到自己的文件夹中,您有不同的选择:

  • 使用deploy 生成器,您根本不需要指定imports。所有包中的所有内容都在本地复制。如果您没有使用生成器(这是使用包的推荐方式)直接从缓存中使用包(也是推荐的方式),那么您很可能希望将所有包复制到本地。在命令行或 conanfile 中使用 -g=deploy 来执行此操作。
  • 使用folder 说明符:https://docs.conan.io/en/latest/reference/conanfile_txt.html#imports
[imports]
include, *.h -> ./include @ folder=True

【讨论】:

  • 那么我认为让柯南将头文件复制到本地目录是推荐的方法吗?通过您提到的deploy-command?因为我能想到的另一种方法是指定 IDE 的包含路径以直接从柯南缓存中合并头文件。这样,依赖项和自己的源代码将更加分离。你碰巧知道这样的事情是否可行? 编辑:刚刚看到您对我的问题的评论,您指出了类似的方向。
  • 不,使用deploy 仍然不是构建、链接和使用柯南包的推荐方式,而是通过柯南generators 直接从柯南缓存中使用它们。这就是生成器所做的,为构建系统和 IDE 提供信息,因此他们可以直接在柯南缓存中找到他们需要的内容,而无需在每个项目中添加多个额外的副本。
  • 我假设生成器仅用于构建系统,您对它们也用于 IDE 集成的提示非常有帮助!现在我只需要自己找一个适合 vscode 的生成器,或者一起破解 :)
  • 注意: 如果有人碰巧来到这里,我找到了 this vscode 的小生成器。您可能只想在您的项目中使用它,或者根据您的需要调整它 - 它对我来说是一个很好的起点:)
  • 是的,确切地说,作为一个内置的示例生成器,有一个 YouCompleteMe (ycm 生成器) docs.conan.io/en/latest/integrations/ide/youcompleteme.html 专门用于 vim 来查找依赖项头等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多