LINUX.ORG.RU

cmake добавить путь для команды protobuf_generate_cpp

 ,


0

1

Имеется правило cmake:

protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS my-protocol.proto)
которое падает с ошибкой
Import "google/protobuf/empty.proto" was not found or had errors.

В файловой системе empty.proto имеется. Ошибка устраняется в bash, если к команде, которую генерирует cmake для этого правила добавить

-I path_to_google_protobuf_empty_proto

Как заставить protobuf_generate_cpp использовать путь path_to_google_protobuf_empty_proto внутри cmake? include_directories не помогает.

P.S. c add_custom_command эта проблема решается путем написания bash команды, но хотелось бы победить с protobuf_generate_cpp.



Последнее исправление: cvprog (всего исправлений: 2)

В порядке предположения: у тебя только лфйт версия протобуфа; не правильно установлена библиотека; Возможно в Protobuf_IMPORT_DIRS надо выставить path_to_google_protobuf_empty_proto

PRN
()

protobuf_generate_cpp

Ого, что оно научилось. Я помню с custom_command делал :D

foreach(next_proto ${protofiles})

    add_custom_command(
        COMMAND
                ${PROTOBUF_PROTOC_EXECUTABLE}
                        --proto_path=${PROTOBUF_INCLUDE_DIRS}
                        --proto_path=${POTOBUF_IMPORT_DIRS}
                        --proto_path=${in_PATH}
                        --cpp_out=${${lib_name}_PROTOBUF_FILES_OUTPUT}
                        ${next_proto}
........
endforeach()

ossa ★★
()
Ответ на: комментарий от ossa

Кстати, разумно было бы в protobuf_generate_cpp дать возможность передавать агрумент –grpc_out для компилятора protoc вместо –cpp_out, тогда бы не нужно бы было кастомные портянки для grpc писать.

cvprog
() автор топика
Ответ на: комментарий от cvprog

protobuf_generate_cpp дать возможность передавать агрумент –grpc_out

это надо делать в grpc. Я использовал протобуф отдельно от grpc. Так что думаю там это будет левой сущностью.

ossa ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.