可以在conan.conf文件中更改默认的semver_direct_mode
包id模式:
Conan.conf配置文件 ¶
[general]
default_package_id_mode=full_package_mode
可能的值是上述方法的名称: full_recipe_mode
、semver_mode
等。
:::info
Notedefault_package_id_mode
是全局配置。 它将更改所有软件包的所有软件包ID的计算方式。 不可能混合使用不同的default_package_id_mode
值。 必须在所有客户端,服务器,CI等中使用相同的default_package_id_mode
,并且必须重新构建所有软件包才能更改该默认值。
:::
请注意,默认的package-id模式是在初始化包和调用package_id()
方法之前使用的模式。在conan.conf中,您仍然可以将full_package_mode
定义为默认值,但是如果配方声明它是仅标题的,则使用:
def package_id(self):
self.info.header_only() # clears requires, but also settings if existing
# or if there are no settings/options, this would be equivalent
self.info.requires.clear() # or self.info.requires.unrelated_mode()
这仍然会被执行,改变 “默认” 行为,并导致一个包只为所有可能的配置和依赖项版本生成一个包id。
请记住,conan.conf可以与conan config install共享并安装。
考虑到您可以将兼容的包与包id模式结合使用。
例如,如果您生成的二进制包使用默认的readpe_revision_mode
,但您希望从激活了不同模式的客户端使用这些包,您可以创建一个兼容的包,将模式转换为readpe_revision_mode
,以便在未找到默认模式的包的情况下,可以解析使用readpe_revision_mode
生成的包:
from conans import ConanFile
class Pkg(ConanFile):
...
def package_id(self):
p = self.info.clone()
p.requires.recipe_revision_mode()
self.compatible_packages.append(p)