config_options()

`config_options()` 方法用于在分配值**之前**配置或约束包中的可用选项。 一个典型的用例是在给定平台上移除一个选项。 例如,`SSE2` 标志在非 32 位架构中不存在,因此应该在此方法中将其移除,如下所示

def config_options(self):
    if self.settings.arch != "x86_64":
        del self.options.with_sse2

`config_options()` 方法的执行顺序

  • 在调用 `configure()` 方法之前。

  • 在分配 `options` 值之前。

  • 在 `settings` 已经定义之后。

可用的自动实现

警告

此功能是实验性的,可能会发生重大更改。有关更多信息,请参阅 Conan 稳定性 部分。

如果未定义 `config_options()` 方法,Conan 可以自动管理在 `implements` ConanFile 属性中指定的某些常规选项

auto_shared_fpic

自动管理的选项

  • ``fPIC`` (True, False).

可以像这样添加到配方中

from conan import ConanFile

class Pkg(ConanFile):
    implements = ["auto_shared_fpic"]
    ...

然后,如果在配方中没有指定 `config_options()` 方法,Conan 将自动在 `config_options` 步骤中管理 fPIC 设置,如下所示

if conanfile.settings.get_safe("os") == "Windows":
    conanfile.options.rm_safe("fPIC")

请注意,将此实现添加到配方中也可能会影响 `configure` 步骤。

如果您需要在配方中实现自定义行为,但又需要这种逻辑,则必须显式声明它

def config_options(self):
    if conanfile.settings.get_safe("os") == "Windows":
        conanfile.options.rm_safe("fPIC")
    if self.settings.arch != "x86_64":
        del self.options.with_sse2

另请参阅