为什么我必须设置
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文件?当通过自制软件安装时,它似乎没有随头文件和库文件一起分发。
答案 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脚本。