Поддержка Cap'n Proto CMake: CAPNP_LIB_CAPNP-JSON НЕ ОТНОСИТСЯ

Почему я должен установить

set(CAPNP_LIB_CAPNP-JSON "")

в моем CMakeLists.txt, чтобы не получить ошибку? Ошибка в следующем:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CAPNP_LIB_CAPNP-JSON (ADVANCED)
    linked by target "client" in directory <...>
    linked by target "server" in directory <...>

Я использую поддержку capnproto CMake путем копирования файла cmake, включенного в исходный код capnproto, в мой проект и включения его вручную. (Есть ли лучший / стандартный способ сделать это? Чувствует себя хакером.) Остальное просто взято из инструкций файла CMake.

Фрагмент CMake:

# so capnp cmake plugin is found
set(CapnProto_DIR "${CMAKE_CURRENT_SOURCE_DIR}/etc/cmake")
# for some reason there is some json lib or something that isn't found?
#set(CAPNP_LIB_CAPNP-JSON "")
find_package(CapnProto REQUIRED)
include_directories(${CAPNP_INCLUDE_DIRS})
add_definitions(${CAPNP_DEFINITIONS})
set(CAPNPC_SRC_PREFIX "src/capnp")
# capnp out of source config
set(CAPNPC_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CAPNPC_OUTPUT_DIR})
# gen cpp
capnp_generate_cpp(CAPNP_SRCS CAPNP_HDRS
        src/capnp/schema.capnp
)

CMake 3.6.2, сборка с использованием встроенных команд сборки CLion. capnp устанавливается через homebrew, последняя версия.

Почему я получаю сообщение об ошибке JSON? О чем это?

Кроме того, есть ли лучший способ для включения официального файла Cap'n Proto CMake? Похоже, он не распространяется с заголовочными и библиотечными файлами при установке через homebrew.

1 ответ

Оказывается, поддержка кодирования / декодирования json - еще не выпущенная (октябрь 2016 г.) функция Cap'n Proto, и попытка использовать файл.cmake из основной ветки с последней выпущенной версией вызывает этот конфликт.

Возможные решения:

1) Используйте обходной путь, размещенный в вопросе, т.е.

set(CAPNP_LIB_CAPNP-JSON "") # add this before next line
find_package(CapnProto REQUIRED)

2) Используйте выпущенную версию скрипта.cmake здесь: FindCapnProto.cmake

3) Соберите и установите Cap'n Proto из исходного кода, используйте с последним скриптом.cmake.

Другие вопросы по тегам