Я уже 2 дня пытаюсь решить эту проблему, но безуспешно. Я прочитал бесконечное количество потоков по всему Интернету и пробовал много предложений, но пока безуспешно.
Я делаю это на Windows 10 с VS2017 и последней установленной версией VS Code. Я установил protobuf с помощью vcpkg install protobuf
:
Пакет protobuf: x64- windows предоставляет цели CMake:
find_package(protobuf CONFIG REQUIRED)
target_link_libraries(main PRIVATE protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite)
Я скачал и извлек Google пример кода и извлек его на свой диск. Файл .PROTO компилируется без проблем:
d:\protobuf-3.12.2\examples>protoc -I=d:\protobuf-3.12.2\examples --cpp_out=d:\protobuf-3.12.2\examples d:\protobuf-3.12.2\examples\addressbook.proto
и создает два файла «addressbook.pb. cc» и «addressbook.pb.h», как и ожидалось.
Теперь когда я пытаюсь скомпилировать проект в Visual Studio Code, он постоянно терпит неудачу, независимо от того, как я изменяю файл CMakeLists.txt. Как уже упоминалось, я просмотрел десятки тем, касающихся этой проблемы, и безуспешно пытался.
Обновление 29.05.2020
Я проверил, что protobuf установлен только один раз, и действительно, демонстрационный пакет также включал полную установку protobuf. Я удалил этот дополнительный демонстрационный пакет и удалил / установил protobuf с помощью vcpgk. Затем я скомпилировал файл .proto с помощью proto c (который находится на моем пути) и получил два файла «addressbook.pb. cc» и «addressbook.pb.h».
Затем я попытался скомпилировать проект еще раз, на этот раз с использованием CMakeLists.txt , поставляемого с демонстрацией.
Соответствующая часть, кажется, находится в самом начале:
# Minimum CMake required
cmake_minimum_required(VERSION 2.8.12)
# Project
project(protobuf-examples)
# Find required protobuf package
find_package(protobuf CONFIG REQUIRED)
if(protobuf_VERBOSE)
message(STATUS "Using Protocol Buffers ${Protobuf_VERSION}")
endif()
set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
Компиляция дает мне:
[main] Building folder: examples
[main] Configuring folder: examples
[cms-client] Configuring using the "Visual Studio 15 2017" CMake generator with platform "x64" and toolset "host=x64"
[cmake] Selecting Windows SDK version 10.0.17763.0 to target Windows
...
[cmake] CMake Error at CMakeLists.txt:8 (find_package):
[cmake] Could not find a package configuration file provided by "protobuf" with any
[cmake] of the following names:
[cmake]
[cmake] protobufConfig.cmake
[cmake] protobuf-config.cmake
[cmake]
[cmake] Add the installation prefix of "protobuf" to CMAKE_PREFIX_PATH or set
[cmake] "protobuf_DIR" to a directory containing one of the above files. If
[cmake] "protobuf" provides a separate development package or SDK, be sure it has
[cmake] been installed.
[cmake]
[cmake]
[cmake] Configuring incomplete, errors occurred!
[cmake] See also "d:/vcpkg/buildtrees/protobuf/src/v3.12.0-8ba83cbbdb/examples/build/CMakeFiles/CMakeOutput.log".
[cms-driver] Error during CMake configure: [cmake-server] Configuration failed.
Файл protobuf-config.cmake можно найти несколько раз в папке protobuf:
D:\vcpkg\buildtrees\protobuf\<BUILDCFG>\share\protobuf\protobuf-config.cmake
D:\vcpkg\installed\<BUILDCFG>\share\protobuf\protobuf-config.cmake
D:\vcpkg\packages\<BUILDCFG>\share\protobuf\protobuf-config.cmake
Что может быть причиной того, что CMake не может найти эти файлы?