Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ConanException:包要求';qt';未在组件中使用需要_Qt_Cmake_Conan - Fatal编程技术网

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

ConanException:包要求';qt';未在组件中使用需要,qt,cmake,conan,Qt,Cmake,Conan,我创建了一个有两个目标的项目,core.dll和runner.exe。 Core.dll取决于Qt5::Core。 Runner.exe依赖于core.dll 我还创建了一个柯南配方conanfile.py 我在要求: def requirements(self): self.requires("qt/e5.12.4@mikhail/testing", private=False) 在包信息中我使用组件: def package_info(self):

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

我还创建了一个柯南配方
conanfile.py

我在
要求:

def requirements(self):
        self.requires("qt/e5.12.4@mikhail/testing", private=False)
包信息中
我使用
组件

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\Python37\site packages\conans\client\installer.py”, 第571行,在_call _package _info中 引发ConanException(“%s package_info():%s”%(str(conanfile),e))conans.errors.ConanException:lexer/1.0。0@mikhail/测试 package_info():package require'qt'未在组件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上创建了一个引用

我必须使用名称空间qt::qt

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

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