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.includedirstoself.cpp.package.includedirsFiles from
self.cpp.local.libdirstoself.cpp.package.libdirsFiles from
self.cpp.local.bindirstoself.cpp.package.bindirsFiles from
self.cpp.local.srcdirstoself.cpp.package.srcdirsFiles from
self.cpp.local.builddirstoself.cpp.package.builddirsFiles from
self.cpp.local.resdirstoself.cpp.package.resdirsFiles from
self.cpp.local.frameworkdirstoself.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()