Cap' n Proto CMake支持:CAPNP_LIB_CAPNP-JSON未找到

时间:2016-10-14 20:38:05

标签: c++ cmake capnproto

为什么我必须设置

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 file included in the capnproto source复制到我的项目中并手动包含它。 (有没有更好的/标准的方法来做到这一点?感觉很乱。)其余的只是从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通过自制程序安装,最新版本。

为什么我收到有关JSON位的错误?那是什么?

此外,是否有更好的方法来包含官方Cap&#39; n Proto CMake文件?当通过自制软件安装时,它似乎没有随头文件和库文件一起分发。

1 个答案:

答案 0 :(得分:0)

事实证明,json编码/解码支持是Cap&n。Proto的一个尚未发布的功能(2016年10月),并尝试使用主分支中的.cmake文件与最后发布的版本产生此冲突。< / p>

可能的解决方案:

1)使用问题中公布的解决方法,即

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

2)在此处使用已发布的.cmake脚本版本:{{3}}

3)从源代码构建并安装Cap&#39; n Proto,使用最新的.cmake脚本。