cppglob
is a C++ port of Python glob
module.
Currently cppglob
supports the following functions.
glob(pattern, recursive = false)
iglob(pattern, recursive = false)
escape(pathname)
- OS: Windows, OSX, Linux
- Compiler: Currently the following compilers are supported.
- MSVC >= 19.14 (Visual Studio 2017 version 15.7.1)
- GCC >= 8.1
- Clang >= 3.5.0 (with libstdc++), >= 7.0.0 (with libc++)
- Cmake >= 3.1.0
$ mkdir -p build
$ cd build
$ cmake -DBUILD_SHARED_LIBS=ON ..
$ make
$ sudo make install
Currently you must place all header files and sources into the proper directories.
- headers:
include/*/*.hpp
- sources:
src/*.cpp
I'm developing the Nuget package.
If the package released, you can easily integrate this project using GUI plugin.
#include <vector>
#include <list>
#include <algorithm>
#include <filesystem>
#include <cppglob/glob.hpp> // cppglob::glob
#include <cppglob/iglob.hpp> // cppglob::iglob
namespace fs = std::filesystem;
int main() {
// get all files and directories in the same directory
std::vector<fs::path> entries = cppglob::glob("./*");
// get all directories in the directory dir_a/
std::vector<fs::path> dirs = cppglob::glob("dir_a/*/");
// get all text files under the directory dir_b/ (recursively searched)
std::vector<fs::path> files = cppglob::glob("dir_b/**/*.txt", true);
// get all pdf files in docs/ directory in order of file name.
std::vector<fs::path> pdf_files = cppglob::glob("docs/*.pdf");
std::sort(pdf_files.begin(), pdf_files.end());
// get all pdf files in docs/ directory in order of file name. (with iglob)
cppglob::glob_iterator it = cppglob::iglob("docs/*.pdf"), end;
std::list<fs::path> pdf_file_list(it, end);
pdf_file_list.sort();
}
- Conan package
- Nuget package
- C++14 support (with
<experimental/filesystem>
or<boost/filesystem>
) - support CPPGLOB_HEADER_ONLY macro
- Performance improvement