c++ - 通过柯南安装仅 header 包时出错

标签 c++ cmake conan

我有一个使用 CMake 构建的内部仅 header C++ 库。我按照柯南的 instructions 了解如何打包仅包含 header 的库,最后得到了这个 conanfile.py:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Conan file for KVAPI.

https://docs.conan.io/en/latest/howtos/header_only.html
"""

from conans import ConanFile, CMake


class KVAPIConan(ConanFile):
    name = "kvapi"
    version = "0.1.0.0"
    description = "Kiwi API library"
    exports_sources = "include/*"
    topics = ("kv", "kvapi", "C++")
    no_copy_source = True

    def package(self):
        self.copy("*.hpp")

    def package_id(self):
        self.info.header_only()

我这样创建包:

> conan create . kvapi/0.1.0.0@kiwi/testing
> conan upload kvapi* -r genetec

然后安装它:

> conan install kvapi/0.1.0.0@kiwi/testing

导致错误:

Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=15
os=Windows
os_build=Windows
[options]
[build_requires]
[env]

kvapi/0.1.0.0@kiwi/testing: Retrieving from server 'genetec'
kvapi/0.1.0.0@kiwi/testing: Trying with 'genetec'...
Downloading conanmanifest.txt
[==================================================] 848B/638B
Downloading conanfile.py
[==================================================] 513B/456B
kvapi/0.1.0.0@kiwi/testing: Downloaded recipe revision 0
Installing package: kvapi/0.1.0.0@kiwi/testing
Requirements
    kvapi/0.1.0.0@kiwi/testing from 'genetec' - Downloaded
Packages
    kvapi/0.1.0.0@kiwi/testing:5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9 - Missing

kvapi/0.1.0.0@kiwi/testing: WARN: Can't find a 'kvapi/0.1.0.0@kiwi/testing' package for the specified settings, options and dependencies:
- Settings:
- Options:
- Dependencies:
- Package ID: 5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9

ERROR: Missing prebuilt package for 'kvapi/0.1.0.0@kiwi/testing'
Try to build it from sources with "--build kvapi"
Or read "http://docs.conan.io/en/latest/faq/troubleshooting.html#error-missing-prebuilt-package"

这是否适用于仅包含 header 的库?

最佳答案

上传 Conan 包时,您需要明确说明何时也想上传二进制包。

conan upload kvapi* -r genetec 命令只上传配方,不上传创建的包。要上传包含这些 header 的配方包和二进制包,您需要添加参数 --all

conan upload kvapi* -r genetec --all

引用:https://docs.conan.io/en/latest/uploading_packages/uploading_to_remotes.html

关于c++ - 通过柯南安装仅 header 包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56668289/

相关文章:

c++ - 创建动态 Cstring

c++ - 检查数字是否在数字列表中的最快方法

c++ - 禁用单个文件的预编译头

c++ - 介子和 Eigen 的文件路径问题

c++ - CMake错误-使用柯南

c++ - 将文本文件读入类对象类型数组 (C++)

c++ - 帮助解决这个问题

c++ - 使用 cmake 从 github 中包含外部头文件库

visual-c++ - 使用 Conan 和 MSVC++ 的静态和动态库包

c++ - Cmake 中的 Boost 文件系统版本错误