conan.tools.files.AutoPackagerΒΆ
The AutoPackager
together with the package layouts feature, allow to automatically
package the files following the declared information in the layout()
method:
It will copy:
- Files from
self.cpp.local.includedirs
toself.cpp.package.includedirs
- Files from
self.cpp.local.libdirs
toself.cpp.package.libdirs
- Files from
self.cpp.local.bindirs
toself.cpp.package.bindirs
- Files from
self.cpp.local.srcdirs
toself.cpp.package.srcdirs
- Files from
self.cpp.local.builddirs
toself.cpp.package.builddirs
- Files from
self.cpp.local.resdirs
toself.cpp.package.resdirs
- Files from
self.cpp.local.frameworkdirs
toself.cpp.package.frameworkdirs
The patterns of the files to be copied can be defined with the .patterns property of the AutoPackager
instance.
The default patterns are:
packager = AutoPackager(self)
packager.patterns.include == ["*.h", "*.hpp", "*.hxx"]
packager.patterns.lib == ["*.so", "*.so.*", "*.a", "*.lib", "*.dylib"]
packager.patterns.bin == ["*.exe", "*.dll"]
packager.patterns.src == []
packager.patterns.build == []
packager.patterns.res == []
packager.patterns.framework == []
Usage:
from conans import ConanFile
from conan.tools.files import AutoPackager
class Pkg(ConanFile):
def layout(self):
...
def package(self):
packager = AutoPackager(self)
packager.patterns.include = ["*.hpp", "*.h", "include3.h"]
packager.patterns.lib = ["*.a"]
packager.patterns.bin = ["*.exe"]
packager.patterns.src = ["*.cpp"]
packager.patterns.framework = ["sframe*", "bframe*"]
packager.run()