Bob
Bob

Reputation: 1447

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

I've created a project which has two targets, core.dll and runner.exe. Core.dll depends on Qt5::Core. Runner.exe depends on core.dll.

Also I've created a conan recipe conanfile.py.

I defined qt in requirements:

def requirements(self):
        self.requires("qt/e5.12.4@mikhail/testing", private=False)

In package_info I use 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"]

On build I have error:

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

I assume I miss some detail. I would appreciate any advice or reference to read about.

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"]
        

If you need more details I created a reference project on GitHub

Upvotes: 5

Views: 3661

Answers (1)

Bob
Bob

Reputation: 1447

I had to use namespace qt::qt.

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

Upvotes: 5

Related Questions