Вы можете взломать источник компилятора protoc, чтобы он автоматически вставлял прагмы в сгенерированные файлы.
В src / google / protobuf / compiler / cpp / cpp_file.cc в GenerateHeader(io::Printer* printer)
вокруг линии 94, измените первый вызов printer->Print
на:
// Generate top of header.
printer->Print(
"// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
"// source: $filename$\n"
"\n"
"#ifndef PROTOBUF_$filename_identifier$__INCLUDED\n"
"#define PROTOBUF_$filename_identifier$__INCLUDED\n"
"\n"
"#ifdef _MSC_VER\n"
"# pragma warning(push)\n"
"# pragma warning(disable: 4127 4244 4267)\n"
"#endif\n"
"\n"
"#include \n"
"\n",
"filename", file_->name(),
"filename_identifier", filename_identifier);
. Затем в конце появится такая же функция по строке 294 , измените последний printer->Print
вызов:
printer->Print(
"#ifdef _MSC_VER\n"
"# pragma warning(pop)\n"
"#endif\n"
"\n"
"#endif // PROTOBUF_$filename_identifier$__INCLUDED\n",
"filename_identifier", filename_identifier);
Теперь вам просто нужно скомпилировать цель protoc и запустить новый protoc.exe, чтобы иметь прагмы в сгенерированных заголовках.