CMake没有生成compile_commands.json

时间:2014-05-30 18:06:18

标签: c++ json cmake clang

我是CMake的新手,我正在尝试创建与clang一起使用的compile_commands.json文件,但是我在生成文件时遇到了一些困难,我不知道为什么。我已经能够使用cmake来编译我下面的二进制文件person,但在那之后我就无法输出编译命令。

我也尝试过-DCMAKE_EXPORT_COMPILE_COMMANDS = ON标志,但这也不起作用。到目前为止,没有错误,但也没有输出。

这是我的CMakeLists.txt文件的样子:

cmake_minimum_required (VERSION 2.6)
project (Tutorial)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_executable(person Person.cc Pirate.cc main.cc)

3 个答案:

答案 0 :(得分:9)

这最终成为使用旧版CMake的问题。我最终安装了最新版本,并按预期工作。

根据Clang docs

“目前CMake(自2.8.5开始)支持使用选项CMAKE_EXPORT_COMPILE_COMMANDS为Unix Makefile构建(Ninja构建)生成编译数据库。”

答案 1 :(得分:1)

我遇到了同样的问题,compile_commands.json 不是用 cmake 生成的,版本 3.16.0。 它是在我使用 Ninja 生成器而不是 Unix Makefiles 时生成的。

那个 discussion 给了我修复:

set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # does not produce the json file
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "") # works

答案 2 :(得分:1)

我也遇到了和你一样的问题。 根据{{​​3}}

<块引用>

此选项 (CMAKE_EXPORT_COMPILE_COMMANDS) 仅由 Makefile Generators 和 Ninja 实现。它在其他生成器上被忽略。

因此,没有办法在使用 MSVC 时生成 compile_commands.json 文件。