PROTOBUF_GENERATE_CPP двоичный путь
Как PROTOBUF_GENERATE_CPP узнает, где взять двоичный файл с протоколом?
Я скомпилировал protobuf локально и хотел бы указать мой CMakeLists.txt на установленный двоичный файл ( myfolder/protobuf-install/bin/protoc), а не на системный двоичный файл (/ usr / bin / protoc)
Обычно для Boost я просто устанавливаю BOOST_ROOT в мою установленную папку, и он находит все include_directories, библиотеки и т. Д.
Как это должно быть сделано для Protobuf. Я не вижу никакой опции префикса в FindProtobuf.cmake.
set( Protobuf_SRC_ROOT_FOLDER "${CMAKE_SOURCE_DIR}/myfolder/")
find_package(Protobuf MODULE REQUIRED)
Ошибка
file STRINGS file "/usr/include/google/protobuf/stubs/common.h" cannot be read.
Call Stack (most recent call first):
CMakeLists.txt:17 (find_package)
Конечно, указанный выше путь находится в папке myfolder /, а не в системной папке. Но почему protobuf ищет включенные в системный путь, когда я явно объявил корневой путь как myfolder /
1 ответ
Модуль FindProtobuf.cmake
есть хорошее описание того, как намекнуть это с различными вещами. Например, подсказка с исполняемым файлом может быть выполнена с установкой переменной Protobuf_PROTOC_EXECUTABLE:
Следующие переменные кэша также доступны для установки или использования:
...
Protobuf_PROTOC_EXECUTABLE
Проток компилятор
cmake -DProtobuf_PROTOC_EXECUTABLE=myfolder/protobuf-install/bin/protoc
Кроме того, общая переменная CMAKE_PREFIX_PATH работает хорошо, см. Этот вопрос: Подсказка Find