CMake найти протобуф, скомпилированный из исходного кода - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь создать проект, который зависит от буферов протокола Google, скомпилированных из исходного кода. Мой проект должен быть независимым от платформы, а также должен поддерживать кросс-компиляцию, поэтому я предпочитаю использовать локально созданный protobuf. Однако я бы предпочел не включать всю библиотеку в качестве подпроекта, так как для сборки потребуется слишком много.

Мой упрощенный файл CMakeLists.txt:

cmake_minimum_required(VERSION 3.5)
project(sample-protobuf)

# find a boost install with the libraries filesystem and system
find_package(Protobuf REQUIRED)

set(SOURCES
    main.cpp
)

add_executable(sample
    ${SOURCES}
)
target_link_libraries(sample
    PRIVATE
        protobuf::libprotobuf
)

Я вызываю CMake в Linux как:

cmake -DCMAKE_PREFIX_PATH=/path/to/built/protobuf/ ..

но библиотека не находит, и я получаю следующее сообщение:

  Could not find a package configuration file provided by "Protobuf" with any
  of the following names:

    ProtobufConfig.cmake
    protobuf-config.cmake

  Add the installation prefix of "Protobuf" to CMAKE_PREFIX_PATH or set
  "Protobuf_DIR" to a directory containing one of the above files.  If
  "Protobuf" provides a separate development package or SDK, be sure it has
  been installed.

В Windows эта процедура работает. Я построил библиотеку на Linux, используя предложенный подход, который не с CMake, а с autotools.

Что мне делать по-другому?

1 Ответ

0 голосов
/ 03 июня 2019
cd protobuf/cmake
mkdir build
cd build
cmake....
make...
sudo make install
...