【问题标题】:ConanException: Package require 'qt' not used in components requiresConanException: Package require 'qt' not used in components requires
【发布时间】:2020-06-30 07:49:49
【问题描述】:

我创建了一个有两个目标的项目,core.dllrunner.exeCore.dll 取决于 Qt5::CoreRunner.exe 依赖于 core.dll

我还创建了一个柯南食谱conanfile.py

我在requirements:中定义了qt

def requirements(self):
        self.requires("qt/e5.12.4@mikhail/testing", private=False)

package_info 我使用components

def package_info(self):
    self.cpp_info.components["core"].libs = ["core"]
    self.cpp_info.components["core"].requires = ["qt"]
    self.cpp_info.components["runner"].requires = ["core"]

在构建时出现错误:

文件 "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\conans\client\installer.py", 第 571 行,在 _call_package_info raise ConanException("%s package_info(): %s" % (str(conanfile), e)) conans.errors.ConanException: lexer/1.0.0@mikhail/testing package_info(): 组件要求中未使用的包需要'qt'

我想我错过了一些细节。如果有任何建议或参考资料,我将不胜感激。

conanfile.py

from conans import ConanFile, CMake, tools

import os.path

class LexerConan(ConanFile):
    name = "lexer"
    license = "Proprietary"
    author = "Mikhail"
    topics = ("lexer")
    version = "1.0.0"

    settings = {
        "os": ["Windows"],
        "compiler": None,
        "build_type": None,
        "arch": None
    }
    options = {"shared": [True, False]}
    default_options = {
        "shared": False
    }
    
    generators = "cmake_paths"
    exports_sources = "*"
    no_copy_source = True

    def build_requirements(self):
        self.build_requires("cmake-toolkit/1.0.0@mikhail/stable")
        self.build_requires("cmake/3.17.1")

    def requirements(self):
        self.requires("qt/e5.12.4@mikhail/testing", private=False)

    def build(self):
        cmake = CMake(self)
        cmake.definitions["VERSION"] = self.version
        cmake.definitions["CMAKE_TOOLCHAIN_FILE"] = os.path.join(self.build_folder, "conan_paths.cmake")
        cmake.configure()
        cmake.build()
        
    def package(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.install()

    def package_info(self): #ERROR ConanException: Package require 'qt' not used in components requires
        self.cpp_info.components["core"].libs = ["core"]
        self.cpp_info.components["core"].requires = ["qt"]
        self.cpp_info.components["runner"].requires = ["core"]
        

如果您需要更多详细信息,我在 GitHub 上创建了参考 project

【问题讨论】:

  • 只有本地组件可以在没有命名空间的情况下使用。否则,您必须添加它。例如:qt::qt, boost::boost, ...
  • 快速提示:不再推荐使用 settings = {"os": ["Windows"], 定义的配方中的约束设置方式。它很可能会在柯南 2.0 中被移除。

标签: qt cmake conan


【解决方案1】:

我必须使用命名空间 qt::qt。

self.cpp_info.components["core"].requires = ["qt::qt"]

【讨论】:

    猜你喜欢
    • 2022-12-02
    • 2022-01-02
    • 2017-02-23
    • 1970-01-01
    • 2021-04-23
    • 2015-01-27
    • 2017-12-20
    • 2022-08-16
    • 2022-12-01
    相关资源
    最近更新 更多