我一直在使用vim中的cmake生成compile_commands.json文件以获得自动补全功能。但是我遇到的问题是,我的文件结构
build include src
我把所有的头文件放在include目录下,源代码放在src目录下。使用cmake时,我设置了set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
来为项目生成代码完成数据库。当生成compile_commands.json
时,它仅适用于我的CMakeLists.txt
文件所在的文件夹(src),因此我没有在include
目录中的头文件中获得自动完成功能。
有没有办法为这个单独的文件夹生成compile_commands.json
?我最终需要把所有的头文件放到与源代码相同的文件夹下吗?
只是为了澄清,只有一个正在构建的cmake项目,因此头文件不对应于单独的项目,例如库。
此外,我已经在Google和SO上搜索了很多,但主要是找到与无法生成compile_commands.json
相关的内容,但我也看到其他网站上说clang不能解析头文件?我看到的关于clang无法解析头文件以生成完成数据库的信息已经过去了几年,但这是我在这里遇到问题的原因吗?
如果有人知道解决我的情况的解决方法,也将不胜感激。
如果有助于澄清我的情况,请参见下面的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)