---
title: 生成JSON文件
description: "compile_commands.json文件是一个JSON格式的文件，它包含了编译器命令行选项和源文件之间的映射关系，用于许多代码编辑器和工具的代码补全、语法检查和代码导航等功能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/development/affinityanalyzer/DevKit_Affinity_0020.html
sourcePath: /source/zh/kunpengdevps/development/affinityanalyzer/DevKit_Affinity_0020.html
indexId: 46aa26cd79a62e0d94d713229a4b807126d8fa92ca81fe54105172cf88e590e378
---
# 生成JSON文件

compile_commands.json文件是一个JSON格式的文件，它包含了编译器命令行选项和源文件之间的映射关系，用于许多代码编辑器和工具的代码补全、语法检查和代码导航等功能。

#### 操作步骤

生成compile_commands.json文件的方法取决于你使用的编译器和构建系统。以下是一些常见的方法：


- 对于使用CMake构建的项目，可以通过在CMake命令中添加-DCMAKE_EXPORT_COMPILE_COMMANDS=ON选项来生成compile_commands.json文件。若项目依赖于第三方库，需要先使用export命令导入第三方库的环境变量。
  例如：

  1 2 export FFTW_INCLUDE=/path/to/FFTW/include cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .

  /path/to/：第三方库的存放路径。

- 对于使用Makefile构建的项目，可以通过以下方式生成。

  - 方式一：
    1 2 3 4 5 make --always-make --dry-run \ | grep -wE 'gcc|g\+\+|c\+\+' \ | grep -w '\-c' | sed 's|cd.*.\&\&||g' \ | jq -nR '[inputs|{directory:".", command:., file:match(" [^ ]+$").string[1:]}]' \ > compile_commands.json

    使用上述命令前需先安装jq软件。本指导仅提供通用操作，更多使用信息请参见jq Manual(https://jqlang.org/manual/)。

  - 方式二：
    1 compiledb -n make -f /path/to/Makefile

    使用上述命令前需先安装compiledb软件。本指导仅提供通用操作，更多使用信息请参见compiledb(https://github.com/nickdiego/compiledb?tab=readme-ov-file)。
