使用 cmake 生成 compile_commands.json
Generate compile_commands.json using cmake
我正在尝试使用cmake构建为google-cloud-cpp项目生成一个compile_commands.json。我试过这个:
$ 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
$ 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
我错过了什么吗?我应该做其他事情吗?任何帮助表示赞赏。
您正在使用超级构建。您提供的选项(-DBUILD_TESTING=OFF
和-DCMAKE_EXPORT_COMPILE_COMMANDS=ON
(不会由顶级super/CMakeLists.txt
文件传递。
您可以尝试将依赖项安装到$HOME
目录中,如下所示:
cmake -Hsuper -B.build/si -DGOOGLE_CLOUD_CPP_EXTERNAL_PREFIX=$HOME/local-cpp
cmake --build .build/si --target project-dependencies
然后像往常一样配置和编译代码:
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
或类似内容。
相关文章:
- 在c++中使用nlohmann从类到json的转换
- C++json插入数组
- nlohmann-json将一个数组插入到另一个数组中
- 如何使用curlpp通过POST方法上传文件和json数据
- JSON转换为nlohmann JSON-lib中的结构数组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何在 nlohmann 的 json 库中获取数组长度?
- UE4 C++ 我无法将 JSON 嵌套值获取到 TArray
- 如何在特定位置追加 json 文件
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- 使用 jsoncpp 解析 json 数组字符串
- 将 FlatBuffer 对象序列化为 JSON,而不使用其架构文件
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 使用 cmake 生成 compile_commands.json
- 如何使用 c++ 和提升库生成 json
- 使用 minijson-reader 库读取 JSON 字符串时出现问题
- 使用 Qt 解析 JSON 数组
- 如何使用 picojson.h 在 c++ 中从头开始创建 json 对象
- 在 C++ 中访问 JSON 数组值