Libraries should have the following directory structure.
<libraryname> build/ // if your using bjam Jamroot.jam // if using bjam build CMake // if you're using CMake CMakeList.txt CTestConfig.cmake include/ boost/ // you could use your own name here <library_name> ... src/ // not required for header only libraries cpp files ... Jamfile.jam // other build systems - optional vcide ... example/ cpp and hpp files Jamfile.jam // other build systems - optional vcide ... test/ cpp and hpp files Jamfile.jam // other build systems - optional vcide ... doc/ html/ boostbook.css html files .... images/ png files ... // document source files - maybe one of those below docbook/ // optional xml files ... // scripts which create html makehtml.bat makehtml.sh boostbook/ // optional xml files ... // scripts which create html makehtml.bat makehtml.sh quickbook/ // optional qbk files ... // scripts which create html makehtml.bat makehtml.sh
This is identical to the recently updated Boost directory structure requirements. It's designed so that the library is contained in one directory structure and need not occupy a specific place within any higher level structure.
The library directory and files can be placed anywhere in the users file hierarchy.
There is no requirement to alter the users Boost directory. The library can be used just by making sure the include directory is available during the compilations of source files which use it.
If the library user prefers to have all his "boost like" libraries in the boost header space, he can make a link or forwarding header in his boost directory tree to accomplish this.
The library may include files named Jamroot.jam to support the Bjam build system.
The library may include files named CMakeLists.txt to support the CMake build system
Other build system support is optional. If supplied it should be either as one file (example: bjam) or as a subdirectory with multiple files.
Note that there is no reason that support for more than one build system cannot be included.