cat CMakeLists.txt cmake_minimum_required(VERSION 3.4.1) project(cJSON) add_library(cJSON SHARED cJSON.cpp cJSON_Utils.cpp) target_include_directories(cJSON PUBLIC .)
时间: 2025-07-05 09:41:24 浏览: 8
### 在 x86 架构的 Ubuntu 系统上使用 CMake 编译 cJSON 库
#### 配置 `CMakeLists.txt` 文件的内容
以下是 cJSON 的典型 `CMakeLists.txt` 文件结构,用于支持在不同平台上编译该库。此文件通常由开发者提供,但如果需要自定义或调整功能,则可以根据需求修改。
```cmake
# 定义最低版本要求
cmake_minimum_required(VERSION 3.10)
# 设置项目名称和编程语言
project(cJSON VERSION 1.7.18 LANGUAGES C)
# 添加头文件路径
include_directories(${PROJECT_SOURCE_DIR}/include)
# 创建静态/共享库
add_library(cjson STATIC src/cJSON.c)
# 如果需要生成动态链接库 (SO),则可以改为 SHARED
option(BUILD_SHARED_LIBS "Build shared libraries instead of static ones." OFF)
if(BUILD_SHARED_LIBS)
add_library(cjson SHARED src/cJSON.c)
endif()
# 处理安装规则
install(TARGETS cjson DESTINATION lib)
install(DIRECTORY include/ DESTINATION include FILES_MATCHING PATTERN "*.h")
# 控制测试模块的启用状态
option(ENABLE_CJSON_TEST "Enable building test programs." ON)
if(ENABLE_CJSON_TEST)
enable_testing()
add_executable(test_cjson tests/test.c)
target_link_libraries(test_cjson PRIVATE cjson)
add_test(NAME run_tests COMMAND test_cjson)
endif()
```
以上脚本涵盖了基本的功能配置,包括创建静态或动态库的选择、安装路径设置以及可选的测试框架支持[^1]。
#### 使用 CMake 编译 cJSON 库的具体步骤
##### 准备阶段
确保已安装最新版 CMake 和必要的开发工具链:
```bash
sudo apt update && sudo apt install -y cmake gcc g++
```
进入 cJSON 源码根目录,并新建一个构建子目录来保持源代码干净整洁:
```bash
cd /path/to/cJSON-source-code
mkdir build && cd build
```
##### 配置阶段
运行 CMake 命令完成初始配置。对于普通的 x86/x86_64 平台而言,无需指定特殊的交叉编译器选项。仅需关注是否生成共享库 (`BUILD_SHARED_LIBS`) 和是否包含单元测试部分 (`ENABLE_CJSON_TEST`) 即可。
执行以下命令启动配置流程:
```bash
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_SHARED_LIBS=ON \
-DENABLE_CJSON_TEST=OFF ..
```
其中各参数含义解释如下:
- `-DCMAKE_INSTALL_PREFIX`: 指定最终产物的安装位置;
- `-DBUILD_SHARED_LIBS`: 开启后将生产 `.so` 动态链接库而不是默认的 `.a` 形式的静态库;
- `-DENABLE_CJSON_TEST`: 关闭不必要的测试组件以减少复杂度[^2]。
##### 编译与安装阶段
一旦成功完成了前面所有的准备工作之后就可以正式开始编译过程了。推荐利用多线程加速这一环节的速度:
```bash
make -j$(nproc) # 自动探测 CPU 核心数并充分利用资源
```
最后一步便是将编译好的成果部署至预定的位置上去:
```bash
sudo make install
```
此时应该能够在 `/usr/local/lib` 下找到新建立起来的 `libcjson.so` 文件,同时对应接口声明也被复制到了 `/usr/local/include` 中去了[^3]。
---
###
阅读全文
相关推荐









