使用Json-C的架构x86_64的未定义符号

时间:2018-08-22 16:02:31

标签: c macos cmake clion json-c

基本上这是我的第一个堆栈溢出问题,所以对这里的任何不正确/愚蠢的问题感到抱歉+我已经尝试了3天,使用人们对类似问题给出的所有其他答案来解决我的问题,但是无论哪种方式我都不会对Cmake足够了解,或者我从一开始就做错了。

我已经通过Homebrew( brew install json-c )安装了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安装软件包后,/中没有任何“ json-c”文件/文件夹usr / local / lib。 usr / local / include中的brew目录只有一个“ json-c”别名。

我尝试使用存储库站点(https://github.com/json-c/json-c)上提供的说明安装json-c,但此后我不知道如何设置CmakeLists.txt来使项目正常工作

我在做什么错。我完全不熟悉编程,但是我不太了解cmake以及通过 git clone 安装新软件包时macOS / Homebrew如何管理文件。

1 个答案:

答案 0 :(得分:2)

您缺少类似的东西

LDFLAGS+= -ljson-c

链接到库。这是CMake在自述文件中的设置说明中的内容。