为什么-DCMAKE_EXPORT_COMPILE_COMMANDS不会创建compile_commands.json文件

时间:2015-03-19 15:03:49

标签: cmake clang

我的cmake --version2.8.12.2

我使用以下命令配置项目构建:

cmake ../klein/ -DBUILD_KLEIN_DEPS=1 -DCMAKE_EXPORT_COMPILE_COMMANDS=1
cmake ../klein/ -DBUILD_KLEIN_DEPS=1 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
cmake ../klein/ -DBUILD_KLEIN_DEPS=1 -DCMAKE_EXPORT_COMPILE_COMMANDS=on
CMAKE_EXPORT_COMPILE_COMMANDS=1 cmake ../klein/ -DBUILD_KLEIN_DEPS=1 

来自干净的构建,以及具有现有成功构建的目录。并希望查看compiler_commands.json文件,但不会显示。

应该在哪个时刻创建:cmake之后,还是make命令之后?应该在./../klein目录中的哪个位置?我的cmake对此选项没有任何说明,因为它总是抱怨未使用的构建变量。

它应该在"脏"目录,我已经执行了一次成功的构建,或者仅在空文件夹中进行了新的运行?

修改 我使用默认生成器" Unix Makefiles"在我的ubuntu linux机器上

EDIT2: 我不是该问题项目的作者(我只想用rtags来探索它,这需要compile_commands.json文件),而且我对CMake机制并不是很熟悉。但是,CMakeLists.txt可能被配置为超级构建(它确实下载和构建依赖项 - 如llvm,z3,...),它包括ExternalProject,但它也从源构建项目本身(klein)。正如我所说,这是一个混合体。

1 个答案:

答案 0 :(得分:0)

您可以指定您使用的生成器吗?从版本3.1.0快速扫描cmake源表明此命令仅在以下两种情况下可用。

if(CMAKE_GENERATOR MATCHES "Unix Makefiles")

if(CMAKE_GENERATOR MATCHES "Ninja")

如果您直接使用Visual Studio,除非您想要向CMake添加补丁,否则运气不佳。否则,我知道许多Windows用户已经去过Ninja。一个优点是它比Visual Studio更快地构建。如果你是,实际上使用Ninja或Unix Makefiles,那么值得深入挖掘。