cmake 和 jsonCPP 静态库目标出错 "jsoncpp_lib_static"

Error with cmake and jsonCPP static library target "jsoncpp_lib_static"

当我尝试在 jsonCPP 上使用 cmake 时,出现以下错误

CMake Error at lib_json/CMakeLists.txt:73 (INSTALL):
install TARGETS given no ARCHIVE DESTINATION for static library target
"jsoncpp_lib_static"

我使用自述文件中的命令:

 cmake -DCMAKE_BUILD_TYPE=debug -DJSONCPP_LIB_BUILD_STATIC=ON -DJSONCPP_LIB_BUILD_SHARED=OFF -G "Unix Makefiles" ../..

从错误来看,您似乎将 CMake 指向“/jsoncpp/src”中的 CMakeLists.txt,而不是“/jsoncpp”中的根目录。

根 CMakeLists.txt 在 this point and it's used in the "/jsoncpp/src/lib_json/CMakeLists.txt" at this point to define the target's ARCHIVE DESTINATION 处定义了变量 ARCHIVE_INSTALL_DIR

由于您跳过了根 CMakeLists.txt,因此永远不会设置此变量。

错误消息提到路径 lib_json/CMakeLists.txt:73,这是相对于 "main" CMakeLists.txt - 即您第一次执行 CMake 时指向的路径。所以 CMake 认为根是“/jsoncpp/src”而不是真正的根。

基本上,要修复您的错误,请清理您的构建文件夹,然后重新运行 CMake 以指向“/jsoncpp”文件夹。


顺便说一下,虽然文档没有特别提到它,但我认为 CMAKE_BUILD_TYPE 是区分大小写的。你应该做 -DCMAKE_BUILD_TYPE=Debug.