Rapidjson is included as a Git submodule because it's a header-only library and easy to integrate. Pugixml is not a Git submodule because its Git repo is not well structured. It does have a CMakeLists.txt but it's difficult to integrate. TODO: Use Git submodule for gtest?