Build policiesļƒ

By default, conan install command will search for a binary package (corresponding to our settings and defined options) in a remote, if itā€™s not present the install command will fail.

As previously demonstrated, we can use the ā€“build option to change the default conan install behaviour:

  • --build some_package will build only ā€œsome_packageā€.

  • --build missing will build only the missing requires.

  • --build will build all requirements from sources.

  • --build outdated will try to build from code if the binary is not built with the current recipe or when missing binary package.

With the build_policy attribute the package creator can change the default conanā€™s build behavior. The allowed build_policy values are:

  • missing: If no binary package is found, conan will build it without the need of invoke conan install with --build missing option.

  • always: The package will be built always, retrieving each time the source code executing the ā€œsourceā€ method.

 class PocoTimerConan(ConanFile):
     settings = "os", "compiler", "build_type", "arch"
     requires = "Poco/1.7.8p3@pocoproject/stable" # comma-separated list of requirements
     generators = "cmake", "gcc", "txt"
     default_options = "Poco:shared=True", "OpenSSL:shared=True"
     build_policy = "always" # "missing"

These build policies are especially useful if the package creator doesnā€™t want to provide binary package, for example, with header only libraries.

The always policy, will retrieve the sources each time the package is installed so it can be useful for providing a ā€œlatestā€ mechanism or ignoring the uploaded binary packages.