Conan 1.52:构建系统改进:MSBuild、CMakeToolchain,持续改进迁移到 2.0 的体验,新增 export_conandata_patches 工具,以及 cmake_layout 的新构建文件夹参数。
我们很高兴地宣布 Conan 1.52 已经发布,并带来了一些重要的新功能和错误修复。首先,此版本对 MSBuild 和 CMakeToolchain 工具进行了改进。此外,我们继续努力简化迁移到 Conan 2.0 的过程,例如支持在 1.X 中安装 remotes.json 或公开 to_apple_arch 工具。我们添加了一个新的 export_conandata_patches 工具,以及一个用于 cmake_layout 的新参数来定义构建文件夹。
此外,值得注意的是,Conan 2.0-beta3 本月也发布了,其中包含了一些新功能和修复。
构建系统工具改进
MSBuild
在 MSBuild.build() 方法中支持 targets
参数。使用此参数,您可以传递要构建的特定目标。您可以在您的配方中使用它,例如
...
class MylibConan(ConanFile):
...
def build(self):
msbuild = MSBuild(self)
msbuild.build("MyProject.sln", targets=["mytarget"])
MSBuild 的 build() 方法将在内部将 /target=mytarget
参数添加到调用中。
CMakeToolchain
在 CMakeToolchain 中添加了对 BUILD_TESTING CMake 变量的支持。此变量将添加到工具链生成的 CMakePresets.json 文件中,当 tools.build:skip_test
配置为 true 时,它会将变量设置为 OFF
。
持续改进迁移到 Conan 2.0 的体验
为了继续简化迁移到 Conan 2.0 的过程,我们在 Conan 1.52 中添加了一些功能,例如
-
在
conan config install
命令中支持 remotes.json。此文件取代了 1.X 中的 remotes.txt,可以使用conan config install
命令安装到本地缓存中。请注意,**只能安装 remotes.json 或 remotes.txt 中的一个**。 -
在 1.X 的
self.requires()
中支持特性。Conan 2.0 的新功能之一是支持 特性 以增强 Conan 依赖项模型。由于有些配方将利用特性模型,因此我们也启用了在 Conan 1.X 中设置这些特性参数的可能性。请注意,这些参数在 Conan 1.X 中不会有任何效果,但不会导致配方抛出错误,从而方便迁移。 -
添加 conan.tools.apple.to_apple_arch 工具。此工具用于在 Conan 风格的架构设置与 Apple 构建工具理解的格式之间转换(x86 到 i386、armv8 到 arm64 等)。
-
添加了向 conan.tools.scm.Git.clone() 传递额外参数的功能。使用该参数,您可以将额外参数作为列表添加到
git clone
调用中。
from conan import ConanFile
from conan.tools.scm import Git
class App(ConanFile):
version = "1.2.3"
def source(self):
git = Git(self)
clone_args = ['--depth', '1', '--branch', self.version]
git.clone(url="https://path/to/repo.git", args=clone_args)
请不要忘记查看 Conan 文档中的 迁移到 Conan 2.0 的指南。
新的 export_conandata_patches 工具
与 apply_conandata_patches() 工具非常相似,我们添加了一个新的 export_conandata_patches 工具来导出在 conandata.yml 文件中声明的补丁。使用方法如下:
from conan import ConanFile
from conan.tools.files import export_conandata_patches
class MyLibrary(ConanFile):
...
def export_sources(self):
export_conandata_patches(self)
它会将 conanfile.conan_data
中定义的所有补丁从 conanfile.recipe_folder
复制到 conanfile.exports_sources_folder
。
cmake_layout 的新构建文件夹参数
在配方中声明 cmake_layout
时,如果 cmake 生成器是多配置的,它会将 conanfile.folders.build
的值设置为 build;如果 cmake 生成器是单配置的,则会将其设置为 build/Debug 或 build/Release,具体取决于 build_type。现在,使用 build_folder
参数,您可以重新定义 build 字符串的值。
from conan import ConanFile
from conan.tools.cmake import cmake_layout
class MyLibrary(ConanFile):
...
def layout(self):
cmake_layout(self, build_folder="mybuildfolder")
这将导致 conanfile.folders.build
对多配置设置为 mybuildfolder,对单配置设置为 mybuildfolder/Debug 或 mybuildfolder/Release。
Conan 2.0-beta3 发布
Conan 2.0 beta3 已经发布。您可以使用 pip 安装它。
$ pip install conan --pre
不要忘记查看 Conan 2.0 的文档。
除了上面列出的内容之外,还有一些小的错误修复,您可能希望了解。如果是这样,请参阅 变更日志 以获取完整列表。
希望您喜欢此版本,并期待您的 反馈。