XcodeToolchain¶
The XcodeToolchain
是 Xcode 的工具链生成器。它将生成可以添加到 Xcode 项目中的 .xcconfig 配置文件。该生成器将当前包的配置、设置和选项转换为 Xcode .xcconfig 文件语法。
The XcodeToolchain
生成器可以在 conanfile 中按名称使用
class Pkg(ConanFile):
generators = "XcodeToolchain"
[generators]
XcodeToolchain
它也可以在 conanfile 的 generate()
方法中完全实例化
from conan import ConanFile
from conan.tools.apple import XcodeToolchain
class App(ConanFile):
settings = "os", "arch", "compiler", "build_type"
def generate(self):
tc = XcodeToolchain(self)
tc.generate()
在执行 conan install
命令后,XcodeToolchain
将生成三个文件。如上所述,对于 XcodeDeps 生成器,每种不同的配置将创建一组具有不同名称的文件。例如,首先为 Release 运行 conan install
,然后为 Debug 配置运行
$ conan install conanfile.py # default is Release
$ conan install conanfile.py -s build_type=Debug
将创建这些文件
.
├── conan_config.xcconfig
├── conantoolchain_release_x86_64.xcconfig
├── conantoolchain_debug_x86_64.xcconfig
├── conantoolchain.xcconfig
└── conan_global_flags.xcconfig
这些文件是
主要的 conan_config.xcconfig 文件,需要添加到项目中。如果也设置了 XcodeDeps,则该文件会包含此生成器生成的文件以及 XcodeDeps 生成的文件。
conantoolchain_<debug/release>_x86_64.xcconfig:声明
CLANG_CXX_LIBRARY
、CLANG_CXX_LANGUAGE_STANDARD
和MACOSX_DEPLOYMENT_TARGET
(当os
设置为Macos
时)变量,并根据构建配置、架构和 SDK 设置进行条件逻辑处理。conantoolchain.xcconfig:聚合所有针对不同已安装配置的 conantoolchain_<config>_<arch>.xcconfig 文件。
conan_global_flags.xcconfig:仅当设置了任何与编译器或链接器标志相关的配置变量时,才会生成此文件。有关更多详细信息,请查看下面的配置部分。
每次使用不同配置调用 conan install
时,都会创建一个新的 conantoolchain_<config>_<arch>.xcconfig 文件,该文件会聚合到 conantoolchain.xcconfig 中,因此您可以在 Xcode 项目中包含不同的配置。
XcodeToolchain 文件可以根据 Conan 设置值声明以下 Xcode 构建设置
*_DEPLOYMENT_TARGET
基于os
+os.version
设置的值,如果设置了该值,构建系统将传递相应的标志(例如MACOSX_DEPLOYMENT_TARGET
在 macOS 上转换为-mmacosx-version-min
)。它定义了二进制文件应运行的最低操作系统版本。CLANG_CXX_LANGUAGE_STANDARD
基于compiler.cppstd
设置的值,该设置定义了 C++ 语言标准。CLANG_CXX_LIBRARY
基于 compiler.libcxx 设置的值,并设置要使用的 C++ 标准库版本。
使用工具链的优势之一是,它们有助于在本地开发流程中实现与在缓存中创建包时完全相同的构建。
conf¶
此工具链也受以下 [conf] 变量影响
tools.build:cxxflags
C++ 标志列表。tools.build:cflags
纯 C 标志列表。tools.build:sharedlinkflags
创建共享库时链接器将使用的标志列表。tools.build:exelinkflags
创建可执行文件时链接器将使用的标志列表。tools.build:defines
预处理器定义列表。
如果您设置了任何这些变量,工具链将使用它们生成 conan_global_flags.xcconfig
文件,该文件将从 conan_config.xcconfig
文件中包含。