我是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)
答案 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 文件。