conanfile.py、conanfile.txt、conanprofile 和 settings.yml 有什么区别?
What is the difference between conanfile.py, conanfile.txt, conanprofile and settings.yml?
一周以来,我一直在尝试为我的项目构建柯南包。我一直在阅读文档,但有很多地方我仍然感到困惑。
有4个文件我觉得很重要:
- conanfile.py
- conanfile.txt
- conan_profile
- 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']
...以及我使用 Conan 包的主项目中的以下 conanfile.txt
:
[requires]
mylib/1.16.0@demo/testing
[generators]
cmake
visual_studio_multi
我需要将 cl
版本定义为 14.24.28314
,这样它就不会与消费项目冲突。
我应该在哪里定义 cl
版本?
文件是:
conanfile.py
是柯南的“食谱”。它声明依赖关系,如何从源构建包。相同的配方可用于管理不同的配置,如不同的平台、编译器、构建类型等
conanfile.txt
是 conanfile.py
的文本简化,可专门用于使用依赖项,但不能用于创建包。 conanfile.py
可用于消耗依赖项和创建包
- a
profile
文件是一个包含 os=Windows
和 compiler=gcc
等配置值的文本文件。你可以在命令行中传递这些值,但最好将它们放在文件中,更易于管理,也更方便。
settings.yml
是 settings
可以取什么值的声明。验证输入并确保没有拼写错误,并使用一组通用配置以便人们可以一起协作。
我建议按照文档中的教程进行操作,例如 https://docs.conan.io/en/latest/getting_started.html, or if you are into video-format, this free training is good: https://academy.jfrog.com/path/conan
关于版本,您需要使用设置中定义的版本,对于Visual Studio
您需要使用14
、15
等。新的msvc
编译器设置,实验性的,将使用编译器版本,如 19.xx
。一般来说,不需要指定编译器版本到补丁,因为这主要是针对二进制模型,通常不需要指定到那个级别。如果您想了解如何自定义设置值,read this section
一周以来,我一直在尝试为我的项目构建柯南包。我一直在阅读文档,但有很多地方我仍然感到困惑。
有4个文件我觉得很重要:
- conanfile.py
- conanfile.txt
- conan_profile
- 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']
...以及我使用 Conan 包的主项目中的以下 conanfile.txt
:
[requires]
mylib/1.16.0@demo/testing
[generators]
cmake
visual_studio_multi
我需要将 cl
版本定义为 14.24.28314
,这样它就不会与消费项目冲突。
我应该在哪里定义 cl
版本?
文件是:
conanfile.py
是柯南的“食谱”。它声明依赖关系,如何从源构建包。相同的配方可用于管理不同的配置,如不同的平台、编译器、构建类型等conanfile.txt
是conanfile.py
的文本简化,可专门用于使用依赖项,但不能用于创建包。conanfile.py
可用于消耗依赖项和创建包- a
profile
文件是一个包含os=Windows
和compiler=gcc
等配置值的文本文件。你可以在命令行中传递这些值,但最好将它们放在文件中,更易于管理,也更方便。 settings.yml
是settings
可以取什么值的声明。验证输入并确保没有拼写错误,并使用一组通用配置以便人们可以一起协作。
我建议按照文档中的教程进行操作,例如 https://docs.conan.io/en/latest/getting_started.html, or if you are into video-format, this free training is good: https://academy.jfrog.com/path/conan
关于版本,您需要使用设置中定义的版本,对于Visual Studio
您需要使用14
、15
等。新的msvc
编译器设置,实验性的,将使用编译器版本,如 19.xx
。一般来说,不需要指定编译器版本到补丁,因为这主要是针对二进制模型,通常不需要指定到那个级别。如果您想了解如何自定义设置值,read this section