Autotools

Warning

These tools are still experimental (so subject to breaking changes) but with very stable syntax. We encourage the usage of it to be prepared for Conan 2.0.

The Autotools build helper is a wrapper around the command line invocation of autotools. It will abstract the calls like ./configure or make into Python method calls.

The Autotools helper can be used like:

from conans import conanfile
from conan.tools.gnu import Autotools

class App(ConanFile):
    settings = "os", "arch", "compiler", "build_type"

    def build(self):
        autotools = Autotools(self)
        autotools.configure()
        autotools.make()

It will read the conanbuild.conf file generated by the AutotoolsToolchain to know read the arguments for calling the configure and make scripts:

  • configure_args: Arguments to call the configure script.

  • make_args: Arguments to call the make script.

Methods

constructor

def __init__(self, conanfile, namespace=None):
  • conanfile: the current recipe object. Always use self.

  • namespace: this argument avoids collisions when you have multiple toolchain calls in the same recipe. By setting this argument, the conanbuild.conf file used to pass information to the toolchain will be named as: <namespace>_conanbuild.conf. The default value is None meaning that the name of the generated file is conanbuild.conf. This namespace must be also set with the same value in the constructor of the AutotoolsToolchain so that it reads the information from the proper file.

configure()

def configure(self, build_script_folder=None)

Call the configure script.

Parameters:
  • build_script_folder (Optional, Defaulted to None): Subfolder where the configure script is located. If None, conanfile.source_folder will be used.

make()

def make(self, target=None)

Call the make program.

Parameters:
  • target (Optional, Defaulted to None): Choose which target to build. This allows building of e.g., docs, shared libraries or install for some AutoTools projects.

install()

def install(self)

This is just an “alias” of self.make(target="install")