diff --git a/docs/source/Compiler.md b/docs/source/Compiler.md index b83aace12..6d881cc8f 100755 --- a/docs/source/Compiler.md +++ b/docs/source/Compiler.md @@ -118,5 +118,8 @@ Additional options: an evolution of. Gives errors if not. Useful to check if schema modifications don't break schema evolution rules. +- `--include-prefix PATH` : Prefix this path to any generated include + statements. + NOTE: short-form options for generators are deprecated, use the long form whenever possible. diff --git a/include/flatbuffers/idl.h b/include/flatbuffers/idl.h index 186cae0c2..2e09b39a5 100644 --- a/include/flatbuffers/idl.h +++ b/include/flatbuffers/idl.h @@ -355,6 +355,7 @@ struct IDLOptions { std::string cpp_object_api_pointer_type; bool union_value_namespacing; bool allow_non_utf8; + std::string include_prefix; // Possible options for the more general generator below. enum Language { diff --git a/src/flatc.cpp b/src/flatc.cpp index 5fbb8dbab..053f112b1 100644 --- a/src/flatc.cpp +++ b/src/flatc.cpp @@ -97,6 +97,8 @@ std::string FlatCompiler::GetUsageString(const char* program_name) const { " an evolution of. Gives errors if not.\n" " --conform-includes Include path for the schema given with --conform\n" " PATH \n" + " --include-prefix Prefix this path to any generated include statements.\n" + " PATH\n" "FILEs may be schemas, or JSON files (conforming to preceding schema)\n" "FILEs after the -- must be binary flatbuffer format files.\n" "Output files are named using the base file name of the input,\n" @@ -142,6 +144,11 @@ int FlatCompiler::Compile(int argc, const char** argv) { } else if (arg == "--conform-includes") { if (++argi >= argc) Error("missing path following" + arg, true); conform_include_directories.push_back(argv[argi]); + } else if (arg == "--include-prefix") { + if (++argi >= argc) Error("missing path following" + arg, true); + opts.include_prefix = argv[argi]; + if (opts.include_prefix.back() != '/' && + opts.include_prefix.back() != '\\') opts.include_prefix += "/"; } else if(arg == "--strict-json") { opts.strict_json = true; } else if(arg == "--allow-non-utf8") { diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 44f7e3559..86cadd320 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -70,7 +70,8 @@ class CppGenerator : public BaseGenerator { const auto basename = flatbuffers::StripPath(flatbuffers::StripExtension(it->first)); if (basename != file_name_) { - code_ += "#include \"" + basename + "_generated.h\""; + code_ += "#include \"" + parser_.opts.include_prefix + basename + + "_generated.h\""; num_includes++; } }