CMake not generating compile_commands.json

CMake not generating compile_commands.json

本文关键字:commands json compile not generating CMake      更新时间:2023-10-16

我是CMake的新手,我正在尝试创建compile_commands。json文件与clang使用,但我有一些困难生成文件,我不知道为什么。我已经能够使用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)

这最终成为使用旧版本CMake的问题。我最后安装了最新的版本,它像预期的那样工作。

根据Clang docs

"目前CMake(从2.8.5开始)支持生成编译数据库用于Unix Makefile构建(Ninja构建正在进行中),选项为CMAKE_EXPORT_COMPILE_COMMANDS。"

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

这个选项(CMAKE_EXPORT_COMPILE_COMMANDS)只由Makefile generator和Ninja实现。

因此,没有办法生成compile_commands。

我有同样的问题,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