Я пытаюсь создать проект, который зависит от буферов протокола 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.
Что мне делать по-другому?