The bundle mentioned here is in the software library category. I define it as a series of compatible software libraries. For a relatively small project, there are not many libraries used and the upgrade process is not fast. This is not a problem, but bundle is very useful for large projects-of course, this requires the support of build system. (But adding such a function is quite simple) the bundle format is probably a list of library = version:
Boost = 1.50qt = 4.8.3opencv = 2.4.2
It means that I pack these lirary into a package. After testing (the example is assumed), I found that the libraries of these versions can work together-that is, compatible. The use of bundle is that users don't need to worry about which version of boost I want to use, which version of opencv, etc. They just need to tell the compilation system that I want to use this bundle. As for boost, QT, what is the version of opencv? Check the bundle directly. The bundle publisher has guaranteed for me that these things can be in harmony. Bundle itself does not contain any dependencies. You can regard it as a version query table. The versions found in this table are compatible. Mom no longer needs to worry that the libraries I use are incompatible with each other. Therefore, this is a good function for users. For database publishers, for example, if you maintain a lot of libraries, bundle is a very good way to organize and publish your libraries. You can also extend the bundle. For example, a database publisher publishes a bundle a, and B of another database publisher can define a bundle Based on A to include a, so that when you specify B, it naturally contains. This is also a common scenario. Imagine:
There are three application teams, they share a framework B and use a lot of libraries in A, then this Framework Team can be used as a bundle B in this way, so for the Application Team, it's just a simple use of bundle B.