【发布时间】:2020-06-30 07:49:49
【问题描述】:
我创建了一个有两个目标的项目,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"]
在构建时出现错误:
文件 "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 中被移除。