ConanException:包要求 'qt' 未在组件中使用要求
ConanException: Package require 'qt' not used in components requires
我创建了一个项目,它有两个目标,core.dll
和 runner.exe
。
Core.dll
取决于 Qt5::Core
。
Runner.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"]
我创建了一个项目,它有两个目标,core.dll
和 runner.exe
。
Core.dll
取决于 Qt5::Core
。
Runner.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"]