Почему я должен установить
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.
Оказывается, поддержка кодирования / декодирования 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.
Других решений пока нет …