CMakeToolchain对象没有属性write_toolchain_file

问题描述

我正在使用柯南版本1.27.1,并尝试从配置文件中选项中的现有设置生成工具链。柯南文档(https://docs.conan.io/en/latest/creating_packages/toolchains/cmake.html)中提供的以下示例因错误而失败。似乎方法write_toolchain_file()不存在。 我尝试了write_toolchain(),该方法可以正常工作,但是它不会生成工具链cmake文件

在此方面的任何帮助,我将不胜感激;这样我就可以从我现有的柯南个人资料中生成一个工具链cmake文件

代码

from conans import ConanFile,CMake,CMaketoolchain

class App(ConanFile):
    settings = "os","arch","compiler","build_type"
    requires = "hello/0.1"
    generators = "cmake_find_package_multi"
    options = {"shared": [True,False],"fPIC": [True,False]}
    default_options = {"shared": False,"fPIC": True}

    def toolchain(self):
        tc = CMaketoolchain(self)
        tc.write_toolchain_files()

运行上述代码时出错:

ERROR: conanfile.py: Error in toolchain() method,line 18
        tc.write_toolchain_file()
        AttributeError: 'CMaketoolchain' object has no attribute 'write_toolchain_files'

解决方法

您正在阅读的文档是最新的,与Conan 1.28 docs相对应。

如果您使用的是较旧的柯南版本,请确保选择相应的文档版本,具体情况为Conan 1.27 docs

可以看出,工具链界面从柯南1.27更改为柯南1.28。这是一项重大更改,但由于此功能是非常新的功能(在柯南1.26中引入)并标记为实验功能,因此可以使用。

引入此更改的原因是允许任何用户直接使用toolchain()方法创建自己的文件,而无需返回具有创建必要文件的委托职责的对象。