Я использую protobuf для генерации кода cpp.
В моем imagereader.prototxt
node {
name: "Image Reader";
type: ImageReader;
name: "path";
type: pb_string;
#value: "${DIR_DATA}/images/";
value: "/local/git/data/images"";
}
}
Код генерируется в зависимости от содержимого файла. т.е. в сгенерированном файле cpp у меня есть строка
/*
* declare instance of node "Image Reader"*/
sandbox::images::ImageReader node_0(std::string("/local/git/data/images/"));
Проблема заключается в том, что, если другой разработчик использует код, он потерпит неудачу, потому что у него может не быть такой же структуры каталогов. Я попытался с переменной окружения DIR_DATA в файле prototxt, но компилятор генерирует файл с точно именем DIR_DATA, который, конечно, не может быть найден.
/*
* declare instance of node "Image Reader"*/
sandbox::images::ImageReader node_0(std::string("${DIR_DATA}/images/"));
Есть ли способ, что protobuf добавляет файл заголовка с помощью команды в файле prototxt? Таким образом, я могу вручную #define DIR_DATA в этом заголовочном файле.
Задача ещё не решена.
Других решений пока нет …