Added --prefix-include option for generated includes.

Change-Id: I288cda33345362f9aec5cbe309e590bf64f328e1
Tested: on Linux.
parent b7bfecb4
...@@ -118,5 +118,8 @@ Additional options: ...@@ -118,5 +118,8 @@ Additional options:
an evolution of. Gives errors if not. Useful to check if schema an evolution of. Gives errors if not. Useful to check if schema
modifications don't break schema evolution rules. 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 NOTE: short-form options for generators are deprecated, use the long form
whenever possible. whenever possible.
...@@ -355,6 +355,7 @@ struct IDLOptions { ...@@ -355,6 +355,7 @@ struct IDLOptions {
std::string cpp_object_api_pointer_type; std::string cpp_object_api_pointer_type;
bool union_value_namespacing; bool union_value_namespacing;
bool allow_non_utf8; bool allow_non_utf8;
std::string include_prefix;
// Possible options for the more general generator below. // Possible options for the more general generator below.
enum Language { enum Language {
......
...@@ -97,6 +97,8 @@ std::string FlatCompiler::GetUsageString(const char* program_name) const { ...@@ -97,6 +97,8 @@ std::string FlatCompiler::GetUsageString(const char* program_name) const {
" an evolution of. Gives errors if not.\n" " an evolution of. Gives errors if not.\n"
" --conform-includes Include path for the schema given with --conform\n" " --conform-includes Include path for the schema given with --conform\n"
" PATH \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 may be schemas, or JSON files (conforming to preceding schema)\n"
"FILEs after the -- must be binary flatbuffer format files.\n" "FILEs after the -- must be binary flatbuffer format files.\n"
"Output files are named using the base file name of the input,\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) { ...@@ -142,6 +144,11 @@ int FlatCompiler::Compile(int argc, const char** argv) {
} else if (arg == "--conform-includes") { } else if (arg == "--conform-includes") {
if (++argi >= argc) Error("missing path following" + arg, true); if (++argi >= argc) Error("missing path following" + arg, true);
conform_include_directories.push_back(argv[argi]); 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") { } else if(arg == "--strict-json") {
opts.strict_json = true; opts.strict_json = true;
} else if(arg == "--allow-non-utf8") { } else if(arg == "--allow-non-utf8") {
......
...@@ -70,7 +70,8 @@ class CppGenerator : public BaseGenerator { ...@@ -70,7 +70,8 @@ class CppGenerator : public BaseGenerator {
const auto basename = const auto basename =
flatbuffers::StripPath(flatbuffers::StripExtension(it->first)); flatbuffers::StripPath(flatbuffers::StripExtension(it->first));
if (basename != file_name_) { if (basename != file_name_) {
code_ += "#include \"" + basename + "_generated.h\""; code_ += "#include \"" + parser_.opts.include_prefix + basename +
"_generated.h\"";
num_includes++; num_includes++;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment