Протокол не выполняется через CMake

#cmake #protocol-buffers

#смаковать #буферы протокола

Вопрос:

Я пытаюсь заставить свои модели protobuf генерироваться с использованием CMake и не уверен, что происходит. Я использовал этот пакет раньше без проблем и следовал документации.

 cmake_minimum_required(VERSION 3.13)
project(sockproto)

find_package(Protobuf REQUIRED)
include_directories(${Protobuf_INCLUDE_DIRS})
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS commands.proto)
add_custom_target(protobuf_compilation DEPENDS ${PROTO_SRCS})
  
 $ tree -L 1
.
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── include
├── Makefile
├── proto
└── tests
  
 $ which protoc
/usr/bin/protoc
  

Ответ №1:

Исправлено, протокол не запускается до тех пор, пока PROTO_SRCS не будут добавлены в исполняемый файл или пользовательскую цель в качестве зависимости.

Комментарии:

1. Согласно вашему описанию, код в вопросе правильный , не так ли? Но для protobuf_compilation цели триггера нужно либо указать это явно: make protobuf_compilation либо добавить ALL ключевое слово в add_custom_target вызов, чтобы цель была создана по умолчанию.