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中被删除。