首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cmake生成compile_commands.json

使用cmake生成compile_commands.json
EN

Stack Overflow用户
提问于 2020-02-07 10:39:37
回答 1查看 2.6K关注 0票数 1

我正在尝试使用cmake构建为google-cloud-cpp项目生成一个compile_commands.json。我试过这个:

代码语言:javascript
复制
$ cmake -DBUILD_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -Hsuper -Bcmake-out
-- The CXX compiler identification is AppleClang 10.0.1.10010046
.....
.....
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_TESTING

$ cmake --build cmake-out -- -j 4
.....
.....
[ 98%] Performing test step for 'google_cloud_cpp_project'
        Start   1: bucket_access_control_test
  1/143 Test   #1: bucket_access_control_test ................................   Passed    0.02 sec
.....
.....
100% tests passed, 0 tests failed out of 143

Total Test time (real) =  19.13 sec
[100%] Completed 'google_cloud_cpp_project'
[100%] Built target google_cloud_cpp_project

一件事是BUILD_TESTING似乎被忽略了-它在生成构建文件时生成一条消息,所有的测试都会运行。对我来说,更直接的事情是,即使设置了标志,也不会生成compile_commands.json。这两个设置都显示在cmake-out/CMakeCache.txt中

代码语言:javascript
复制
$ grep -E 'BUILD_TESTING|COMPILE_C' cmake-out/CMakeCache.txt
BUILD_TESTING:UNINITIALIZED=OFF
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1

我是不是遗漏了什么?我还应该做别的什么吗?感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-06-11 02:30:30

您正在使用超级构建。顶级super/CMakeLists.txt文件不会向下传递您提供的选项(-DBUILD_TESTING=OFF-DCMAKE_EXPORT_COMPILE_COMMANDS=ON)。

您可以尝试将依赖项安装到$HOME中的一个目录中,如下所示:

代码语言:javascript
复制
cmake -Hsuper -B.build/si -DGOOGLE_CLOUD_CPP_EXTERNAL_PREFIX=$HOME/local-cpp
cmake --build .build/si --target project-dependencies

然后像往常一样配置和编译代码:

代码语言:javascript
复制
cmake -DBUILD_TESTING=OFF -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -H. -Bcmake-out -DCMAKE_PREFIX_PATH=$HOME/local-cpp
cmake --build cmake-out

由于您使用的是macOS,因此可能需要添加-DOPENSSL_ROOT_DIR=/usr/local/opt/libressl或类似的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60106383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档