【问题标题】:How to define component in Conan package如何在柯南包中定义组件
【发布时间】:2021-03-19 16:26:05
【问题描述】:

我的包包含几个库(“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 cannot be used with self.cpp_info global values at the same time”

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

【问题讨论】:

    标签: conan


    【解决方案1】:

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

    你不能同时使用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"]
    

    【讨论】:

    • 你在哪里看到我使用“self.cpp_info.libs 和 self.cpp_info.components”?我瞎了吗?我的 package_info() 方法中没有其他内容,只有这两行。我不显示 source()/build()/package() 因为它们似乎无关紧要。顺便说一句,我也不理解文档中的警告。对此感到抱歉。
    • 因为您的错误消息:“ConanException: MyTest/0.1 package_info(): self.cpp_info.components 不能同时与 self.cpp_info 全局值一起使用”。它仅在您将两者混合时发生。也许你的食谱现在很清楚,但你有一个两者都有的缓存食谱。您可以运行 conan remove -y MyTest/0.1@ 并重新构建。
    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2022-09-29
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多