xmake
xmake copied to clipboard
Generated `compile_commands.json` is incomplete when using precompiled headers
Xmake 版本
2.7.1
操作系统版本和架构
Windows 11 22H2
描述问题
我用clangd+xmake,但是xmake自动生成的compile_commands.json
里面没把预编译头相关的选项导出来
所以用了set_pcxxheader
/set_pcheader
之后clangd的高亮会不对😕
对于cl/clang-cl需要加上-FI
选项,对gcc/clang需要加上-include
选项
期待的结果
当使用了set_pcxxheader
/set_pcheader
时,在compile_commands.json
里需要加上-FI
或者-include
参数指定被强制包含的预编译头文件
工程配置
/// main.cpp
int main() {
printf("Hello, world\n");
}
/// pch.h
#include<iostream>
target("main")
set_kind("binary")
add_files("main.cpp")
set_pcxxheader("pch.h")
附加信息和错误日志
No response
我禁用了,目前不支持,按理不管是否使用 pch,你只要 main.cpp 里面 include 了,就不会有问题,一样可用,但你这 main 里没去 include
这么做是有什么原因吗?
cpp里确实是这样,但如果我有个.h里面依赖了pch的内容,那这个.h的高亮也就不行了(我不该在头文件里引入预编译头吧?)
这么做是有什么原因吗?
单纯只是没时间,懒得搞,所以直接禁用,退化到正常 include ,反正 cpp 里也能正常 work
直接把plugins/project/clang/compile_commands.lua
里头的target:set("pcheader", nil)
这两行注掉好像就能用了,现在还没遇到什么bug
由于你测试过 clangd 支持它。目前 dev 版本可以通过 --lsp=clangd
参数也放开对 pcheader 的支持。。
xmake project -k compile_commands --lsp=clangd