заставить его не использовать системный Protobuf?
второй день мучаюсь ничего не выходит.
protoc компилирует тем что скачал конан но при компиляции сгенерированных файлов #include <google/protobuf/port_def.inc> берется из системы
вот код подпроекта с protobuf-ами
find_package(protobuf CONFIG REQUIRED)
find_package(gRPC CONFIG REQUIRED)
add_library(${PROJECT_NAME}
STATIC
amur.proto
)
target_include_directories(${PROJECT_NAME} PRIVATE
"${CMAKE_CURRENT_BINARY_DIR}"
)
if (protobuf_LITE)
target_link_libraries(${PROJECT_NAME} PRIVATE protobuf::libprotobuf-lite)
else()
target_link_libraries(${PROJECT_NAME} PRIVATE protobuf::libprotobuf)
endif()
if(TARGET protobuf::libprotoc)
target_link_libraries(${PROJECT_NAME} PRIVATE protobuf::libprotoc)
endif()
get_target_property(grpc_cpp_plugin_location gRPC::grpc_cpp_plugin LOCATION)
protobuf_generate(TARGET ${PROJECT_NAME} LANGUAGE cpp)
protobuf_generate(TARGET ${PROJECT_NAME} LANGUAGE grpc GENERATE_EXTENSIONS .grpc.pb.h .grpc.pb.cc PLUGIN "protoc-gen-grpc=${grpc_cpp_plugin_location}")
grpc рекомендуют ставить в систему, видимо не просто так
ты уверен что cmake берёт именно не системный протобаф?
ну рекомендуется, но многие через конан ставят, я скачал тестовый пример рядом с рецептом, и после небольших модификаций он завелся у меня с указанным протобуфом. но вот не в тестовом проекте уже не заводится, раница по сути только в том что подмодуль использует grpc а не само приложение
protobuf_generate берет из conan, а при компиляции уже берется системный, там номер версии указан, и в сгенерированных файлах стоит версия конановского протобуфа, а include уже из системы тянет
А как интегрируется с конаном?
Обсуждают сегодня