ConanException:包要求 'qt' 未在组件中使用要求

ConanException: Package require 'qt' not used in components requires

我创建了一个项目,它有两个目标,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"]

构建时出现错误:

File "C:\Users\user\AppData\Roaming\Python\Python37\site-packages\conans\client\installer.py", line 571, in _call_package_info raise ConanException("%s package_info(): %s" % (str(conanfile), e)) conans.errors.ConanException: lexer/1.0.0@mikhail/testing package_info(): Package require 'qt' not used in components requires

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

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。

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