【问题标题】:conan.io - header only packageconan.io - 仅标头包
【发布时间】:2016-10-28 18:43:30
【问题描述】:

我正在尝试创建一个名为 foo 的简单演示 仅标题库,并需要另一个名为 bar 的库。

foo的结构是这样的:

foo/include/foo.hpp - 只是一个测试头文件...

foo/conanfile.py

from conans import ConanFile, CMake

class FooConan(ConanFile):
    name = "foo"
    version = "0.0.1"
    exports = "*"

使用以下方式导出:

conan export steazzalini/testing

bar/conanfile.txt

[requires]
foo/0.0.1@steazzalini/testing

[generators]
cmake

conan install 失败说:

ERROR: Can't find a 'foo/0.0.1@steazzalini/testing' package for the specified options and settings

- Try to build from sources with "--build foo" parameter
- If it fails, you could try to contact the package author , report your configuration and try to collaborate to support it.

Package configuration:
- Settings:
- Options:

提前感谢您的帮助!

【问题讨论】:

  • 这不像 c++看起来
  • @ScottHunter conan.io 是 c++ 的包管理器
  • @ScottHunter 它与 C++ 包管理器 conan 相关。无论如何,我同意用python 和/或柯南(如果它有标签)标记可能会更好
  • @steazzalini 即使只是标题,您仍然需要将其打包,请参阅:github.com/conan-io/conan/issues/324

标签: c++ conan


【解决方案1】:

稍微澄清一下,我猜你的意思是 bar 需要库 foo

每个包都必须被创建,即使它是一个只有头文件的库。当您conan export 时,它会将源代码复制到配方中(另一种选择是使用source() 方法来检索源代码),但仍然必须创建包。

build() 方法不是必需的,因为没有要构建的东西,但您应该将 package() 方法添加到您的配方中,例如:

def package(self):
   self.copy("*.h", dst="include", src="include")

然后你必须创建包。这可以通过多种方法完成,一种是安装 foo 包:

$ conan install foo/0.0.1@steazzalini/testing --build

但这通常不是必需的,因为您也可以在从消费者项目(bar之一)调用安装时构建它:

$ conan install . --build

还有一个选项,build_policy 可以添加到配方中,非常适合仅用于标头的库。可以是missingalways。后者在从项目的最新 git (master/head..) 提交创建包时很有用。使用此策略,消费者不必显式调用--build 来指定必须创建包。所以配方可能是这样的:

from conans import ConanFile, CMake

class FooConan(ConanFile):
    name = "foo"
    version = "0.0.1"
    exports = "*"
    build_policy = "missing"

    def package(self):
       self.copy("*.h", dst="include", src="include")

最后,您可能对$ conan new foo/0.0.1@steazzalini/testing -i 命令感兴趣,该命令将为您创建一个conanfile.py,其中包含其中的一些内容。此类命令的-t 选项可用于创建test_package,这是一个用于创建和测试包的实用程序,以确保包正确。看看http://docs.conan.io/en/latest/packaging/testing.html#automatically-creating-and-testing-packages

更新:柯南文档有一个专门针对仅标头库的新部分:http://docs.conan.io/en/latest/howtos/header_only.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多