如何在Conan包中定义组件

问题描述

我的包包含多个库(“a”和“b”),我尝试定义单独的组件。像这样

    def package_info(self):
      self.cpp_info.components["CA"].libs = ["a"]
      self.cpp_info.components["CB"].libs = ["b"]

没有什么特别的,根据文档,我相信。但是当我创建包时,柯南说“ConanException: MyTest/0.1 package_info(): self.cpp_info.components 不能与 self.cpp_info 全局值同时使用”

我不明白。这是什么意思?我做错了什么?

解决方法

你的例子是正确的,但你的食谱是混合的,没有按照你的例子。

您不能同时使用 self.cpp_info.libsself.cpp_info.components

关于 cpp-info 的文档有警告。

因此,您可以使用:

def package_info(self):
    self.cpp_info.libs = ["foo"]

def package_info(self):
    self.cpp_info.components["a"].libs = ["foo"]

但不混合:

def package_info(self):
    self.cpp_info.libs = ["bar"]
    self.cpp_info.components["a"].libs = ["foo"]