代码之家  ›  专栏  ›  技术社区  ›  YoavKlein

柯南建筑的困惑

  •  0
  • YoavKlein  · 技术社区  · 5 年前

    我在努力掌握柯南的工作原理,学习柯南的医生。
    conanfile.txt 包含 [requirements] 第节,其中规定了项目的所有要求。
    conan install -Conan从 ~/.conan/profiles/default

    conanfile.py 它被称为 配方

    docs 说那个 conan create 相当于:

    $ conan export . demo/testing
    $ conan install hello/0.1@demo/testing --build=hello
    # package is created now, use test to test it
    $ conan test test_package hello/0.1@demo/testing
    

    1. 为什么客户下载配方?配方不是只需要创建包吗?
    2. compiler 一点我能理解 os arch 例如,既然x86windows客户机不能处理Linux包或ARM包,那么为什么编译器是客户机指定的配置的一部分呢?
    3. 食谱中有一行 settings = "os", "compiler", "build_type", "arch"

    设置字段定义不同二进制软件包的配置。在本例中,我们定义了对操作系统、编译器、体系结构或构建类型的任何更改都将生成不同的二进制包。请注意,Conan为同一配方的不同配置(在本例中为设置)生成不同的二进制软件包。

    1. 是否同时用于包创建和包消费?
    0 回复  |  直到 5 年前
        1
  •  1
  •   uilianries    5 年前

    以下是一些答案:

    1. 为什么客户下载配方?配方不是只需要创建包吗?

    是的,客户端下载这个配方是因为如果二进制文件不能用于所需的包ID,那么这个配方将用于构建源代码。并非所有配置都在中可用 conan-center

    也, build options 在里面 conan install

    这种行为不会改变,因为它是柯南1.0的一部分,会破坏许多用户从柯南缓存中消费他们的食谱。

    1. 为什么客户端的概要文件包含编译器位?例如,我可以理解os和arch,因为x86windows客户机不能处理Linux包或ARM包,但是为什么编译器是客户机指定的配置的一部分呢?

    不同的编译器提供不同的二进制文件。在Windows上,可以使用mingw的gcc或MSVC。在Linux上,可以使用clang或gcc,它们大多数时候都是兼容的,但是生成不同的二进制文件,包括优化级别。此外,还有其他与每个编译器相关的重要标志,如libcxx(libstdc++,libc++,libstdc++11)或Runtime for MSVC(MT,MD)。有些编译器版本只支持C++11(GCC4.9),所以在构建项目时必须确保编译器的兼容性。基本上,它会影响 ABI compatibility .

    如果你想开发一个新的简单配方,在你的机器上,建立它并使用它,所以 conan create 就是这样。您将使用 conan create Development flow with Conan Create 有关详细信息,请参阅第节。

    另一方面 conan install 主要用于包消费,也可以用于包创建。什么时候

    背后的原因是 首先,它用于两个提议,但是我们需要一些更直接的方法来创建包,所以 介绍了。但是,由于向后兼容规则,我们无法删除功能, 柯南安装

    推荐文章