cmake 生成多个 compile_commands.json?
cmake generate multiple compile_commands.json?
我一直在将cmake与vim一起使用并生成一个compile_commands.json文件以获得自动完成功能。我遇到的问题是我有一个文件结构
build include src
我的所有头文件都在包含目录和 src 中的源代码中。在使用 cmake 时,我设置了set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
为项目生成代码完成数据库。生成compile_commands.json
时,它仅适用于包含我的CMakeLists.txt
文件 (src) 的文件夹,因此我在include
目录中的头文件没有完成。
有没有办法为这个单独的文件夹生成compile_commands.json
?我最终需要将所有头文件与源代码放在同一个文件夹中吗?
只是为了澄清只有一个 cmake 项目正在构建,因此头文件不对应于单独的项目,例如库。
我也用谷歌搜索了很多,但主要是找到与人们无法生成 compile_commands.json 有关的事情,但是我也在其他网站上看到 clang 无法解析头文件?然而,我看到的关于 clang 不解析头文件以生成完成数据库的信息是几年前的,但这是我在这里遇到麻烦的原因吗?
GitLab cmake 头文件
此外,如果有人知道可以补救我的情况的解决方法,也将不胜感激。
请参阅下面的CMakeLists.txt文件,如果这有助于澄清我的情况,谢谢:
CMAKE_MINIMUM_REQUIRED(VERSION 3.11.0 FATAL_ERROR)
project(inheritance VERSION 0.1.1 LANGUAGES CXX)
# add executable
add_executable(inheritance main.cpp CommissionEmployee.cpp)
target_include_directories(inheritance PRIVATE ../include)
target_compile_features(inheritance PRIVATE cxx_std_14)
# generate compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
compile_commands.json
具有源文件的编译命令。除非头文件是翻译单元的一部分,否则不会编译它们。您也许可以使用周围的源文件做出最佳猜测,但这很容易出错。
请记住,头文件的编译标志可能不同,具体取决于包含它的源文件。
一种可能的解决方案是将标头包含在包含所有头文件(有点像PCH)的源文件中(可能是使用CMake
自动生成的)。这也将确保标头编译,并在使用/交付库之前捕获任何错误。
- 在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 数组值