基本上这是我的第一个堆栈溢出问题,所以我很抱歉这里的任何不准确/愚蠢的问题+我已经尝试了3天来解决我的问题使用人们对类似问题给出的所有其他答案,但无论哪种方式,我都不够了解Cmake,或者我从一开始就做错了什么。
我已经通过Homebrew安装了Json-c(brew install json-c(。我在使用Cmake的macOS上使用Clion。 我已经修改了我的CmakeLists:
cmake_minimum_required(VERSION 3.10)
project(Project C)
set(CMAKE_C_STANDARD 99)
INCLUDE_DIRECTORIES(/usr/local/Cellar/json-c/0.13.1/include/json-c)
LINK_DIRECTORIES(/usr/local/Cellar/json-c/0.13.1/lib)
add_executable(Project main.c functions.c functions.h exp_functions.c exp_functions.h)
TARGET_LINK_LIBRARIES(Project)
但我不确定如何为TARGET_LINK_LIBRARIES设置参数。
当我尝试构建项目时,它给了我这个:
Undefined symbols for architecture x86_64:
"_json_object_new_double", referenced from:
_GenerateJson in functions.c.o
"_json_object_new_object", referenced from:
_GenerateJson in functions.c.o
"_json_object_new_string", referenced from:
_GenerateJson in functions.c.o
"_json_object_object_add", referenced from:
_GenerateJson in functions.c.o
"_json_object_to_json_string", referenced from:
_GenerateJson in functions.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
从我在网络上发现的情况来看,有人遇到了类似的问题(https://github.com/json-c/json-c/issues/235(,但是在我通过 Brew 安装软件包后,我在/usr/local/lib 中没有任何"json-c"文件/文件夹。usr/local/include 中只有 "json-c" 别名。
我尝试使用存储库站点 (https://github.com/json-c/json-c( 上提供的说明安装 json-c,但在那之后我不知道如何设置 CmakeLists.txt以使项目正常工作
我做错了什么。我对编程完全不熟悉 + 当我通过git 克隆安装新软件包时,我对 cmake 以及 macOS/Homebrew 如何管理文件知
之甚少。你缺少类似的东西
LDFLAGS+= -ljson-c
以链接到库。它在他们的自述文件中的CMake设置说明中。