Conan 1.42:新增用于 Xcode 的 Conan XcodeDeps 多配置生成器,添加了新的 OSX 版本 12.0(Monterey),更轻松地停用聚合环境。
Conan 1.42 带来了几个重要的新特性。我们添加了一个新的conan.tool.XcodeDeps 生成器,它支持多种配置并易于与 Xcode IDE 集成。此外,Conan 现在在其默认设置中提供了 OSX Monterey 支持。最后,Conan 现在生成一个脚本,用于停用所有聚合环境,就像它用于激活环境一样。
新的 XcodeDeps 多配置生成器
新的XcodeDeps 生成器允许轻松与 Xcode IDE 集成。它支持多种配置,因此,如果您为不同的Release 和 Debug 配置安装包,则可以在 IDE 中在这两种配置之间切换,并且依赖项信息会更新以匹配活动配置的要求。
让我们看看如何在您的Xcode 项目中使用 Conan 生成的文件。假设您有一个具有以下结构的简单 Xcode 项目
.
└── MyApplication
├── MyApplication
│ ├── conanfile.txt
│ └── main.cpp
└── MyApplication.xcodeproj
使用如下所示的conanfile.txt,其中仅将fmt 作为依赖项,并添加XcodeDeps 生成器
[requires]
fmt/8.0.1
[generators]
XcodeDeps
您可以为Release 和Debug 配置安装依赖项
$ conan install . -s build_type=Debug
$ conan install . -s build_type=Release
Conan 将安装所有必需的包,并生成多个.xcconfig 文件,其中包含有关这些依赖项的所有信息。在这种情况下,由于ftm 是一个没有传递依赖项的库,因此生成的文件为
conan_fmt.xcconfig
conan_fmt_debug_x86_64.xcconfig
conan_fmt_release_x86_64.xcconfig
conan_fmt_vars_debug_x86_64.xcconfig
conan_fmt_vars_release_x86_64.xcconfig
conandeps.xcconfig
这些文件定义了信息,例如在何处搜索依赖项的头文件、编译器标志、库的位置、编译应用程序所需的框架等,以及Debug 和Release 配置。它还将生成一个单一文件(conandeps.xcconfig),该文件聚合了直接依赖项的所有文件(在本例中仅为fmt)。
转到您的Xcode 项目,单击该项目,然后选择添加到…
将这些文件添加到您的项目
再次单击项目。在 Info/Configurations 部分,为 Release 和 Debug 选择conandeps。
现在像往常一样构建。Xcode 将使用 Conan 为活动配置提供的信息进行链接。
除了这个新的生成器之外,我们现在还在 Conan 安装附带的默认设置中支持macOS Monterey。
轻松停用聚合环境
我们不断改进 Conan 用于管理环境的工具。到目前为止,环境被分组以便在conanbuild
和conanrun
脚本中激活,但没有生成聚合脚本用于停用。从这个版本开始,一个新的deactivate_conanbuild
或deactivate_conanrun
与这些文件一起生成,以便一次停用所有环境。
此外,请注意我们对环境类进行了一些更改。现在,Environment 只是一个由其他类(如conan.tools.gnu autotools 辅助程序以及VirtualBuildEnv 和VirtualRunEnv 生成器)使用的通用类。如果要使用它,则需要使用vars() 方法从其中获取当前上下文 EnvVars 对象的特化。让我们看一个例子
from conans import ConanFile
from conan.tools.env import Environment
class Pkg(ConanFile):
def generate(self):
env1 = Environment()
env1.define("env_name", "env1")
env1.vars(self).save_script("env1_launcher")
env2 = Environment()
env2.define("env_name", "env2")
env2.vars(self).save_script("env2_launcher")
env3 = Environment()
env2.define("env_name", "env3")
env2.vars(self).save_script("env3_launcher")
请注意与以前的实现相比,语法发生了变化。现在,在运行conan install .
后,将生成以下文件
├── conanbuild.sh
├── deactivate_conanbuild.sh
├── env1_launcher.sh
├── env2_launcher.sh
└── env3_launcher.sh
您可以使用conanbuild.sh
一次激活所有环境,并使用deactivate_conanbuild.sh
以正确的顺序停用它们。请查看文档以获取有关此主题的更多信息。
除了上面列出的内容外,还有一些较小的错误修复,您可能希望阅读。如果是这样,请参阅更改日志以获取完整列表。
我们希望您喜欢此版本,并期待您的反馈。