【问题标题】:What is the difference between conanfile.py, conanfile.txt, conanprofile and settings.yml?conanfile.py、conanfile.txt、conanprofile和settings.yml有什么区别?
【发布时间】:2021-12-12 18:48:55
【问题描述】:

一周以来,我一直在尝试为我的项目构建柯南包。我一直在阅读文档,但仍有很多地方让我感到困惑。

我认为有 4 个文件非常重要:

  • conanfile.py
  • conanfile.txt
  • 柯南个人资料
  • settings.yml

每个文件的用途是什么?每个文件应该放在哪里?哪些可以互换?

我有以下conanfile.py 生成柯南包:

from conans import ConanFile, CMake

class mylibConan(ConanFile):
    name = "mylib"
    version = "1.16.0"
    generators = "cmake"
    settings = "os", "arch", "compiler", "build_type"
    options = {"shared": [True, False]}
    default_options = "shared=False"
    exports_sources = ["*"]
    url = ""
    license = ""
    description = "The mylib HAL library."

    def configure(self):
        self.options.shared = False

    def build(self):
        cmake = CMake(self)
        cmake.configure()
        cmake.build()

    def package(self):
        libs_build_dir = "lib_mylib/" + str(self.settings.build_type)
        api_dir = "modules/mylib/lib/api/"
        self.copy(pattern="lib_mylib.lib", dst="lib", src=libs_build_dir)
        self.copy(pattern="*", dst="include", src=api_dir)

    def package_info(self):
        self.cpp_info.includedirs = ['include']
        self.cpp_info.libdirs = ['lib']
        self.cpp_info.libs = ['mylib']

...以及以下conanfile.txt 在我使用柯南包的主项目中:

[requires]
mylib/1.16.0@demo/testing

[generators]
cmake
visual_studio_multi

我需要将cl 版本定义为14.24.28314,这样它就不会与消费项目冲突。

我应该在哪里定义cl 版本?

【问题讨论】:

    标签: c++ cmake conan cl


    【解决方案1】:

    文件是:

    • conanfile.py 是柯南的“秘诀”。它声明了依赖关系,如何从源代码构建包。相同的配方可用于管理不同的配置,例如不同的平台、编译器、构建类型等
    • conanfile.txtconanfile.py 的文本简化,可以专门用于消费依赖,但不能用于创建包。 conanfile.py 既可以用来消费依赖,也可以用来创建包
    • profile 文件是一个文本文件,其中包含os=Windowscompiler=gcc 等配置值。您可以在命令行中传递这些值,但最好将它们放在文件中,更易于管理和方便。
    • settings.ymlsettings 可以采用什么值的声明。验证输入并确保没有拼写错误,并使用一组通用配置,以便人们可以一起协作。

    我建议按照文档中的教程进行操作,例如 https://docs.conan.io/en/latest/getting_started.html,或者如果您喜欢视频格式,这个免费培训很好:https://academy.jfrog.com/path/conan

    关于版本,您需要使用设置中定义的版本,对于Visual Studio,您需要使用1415等。新的msvc编译器设置,实验性,将使用编译器版本,如19.xx。一般来说,不需要指定编译器版本到补丁,因为这主要用于二进制模型,通常不需要到那个级别。如果你想了解如何自定义设置值,read this section

    【讨论】:

    • 根据链接,settings.yml 文件位于user/.conan 文件夹中。但是我的 conan 包源代码和消费项目代码都驻留在 git repos 中,其他开发人员将下载这些代码。那么settings.yml会有什么影响呢?
    • 您可以使用conan config install 管理所有配置项,如设置、配置文件、挂钩、遥控器、conf 等。这允许在开发人员机器和 CI 机器之间共享和同步所有这些内容。
    猜你喜欢
    • 2019-09-30
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    相关资源
    最近更新 更多