CMake没有生成compile_commands.json

Luc*_*cas 8 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)
Run Code Online (Sandbox Code Playgroud)

PJ1*_*127 11

我有同样的问题,compile_commands.json不是用 cmake 生成的,版本 3.16.0。它是我使用Ninja生成器时生成的,但不是Unix Makefiles

那次讨论给了我解决办法:

set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # does not produce the json file
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "") # works
Run Code Online (Sandbox Code Playgroud)


小智 10

我也遇到了和你一样的问题。根据CMake 文档

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

因此,使用MSVC时没有生成compile_commands.json文件的解决方案。


Luc*_*cas 9

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

根据Clang文档

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

  • 刚刚在这里找到了确切的答案:http://clang.llvm.org/docs/JSONCompilationDatabase.html"目前CMake(自2.8.5开始)支持为Unix Makefile构建(Ninja build in works)生成编译数据库CMAKE_EXPORT_COMPILE_COMMANDS". (3认同)