一个keil工程里有多个target,每个target定义的宏有区别,但是在切换target后c_cpp_properties.json里的defines不会跟着变,导致vscode还是按照第一个target(大概)的宏来显示代码,#ifdef 包起来的代码显示就是错的
@admin 我看github上有一个issue也提了这个问题 https://github.com/github0null/keil-assistant/issues/44
我看了一下c_cpp_properties.json,里面实际上有所有targets的配置,需要手动在vscode右下角切换,能不能自动切换呢?
dy228a 这个是 c/c++ 插件提供的切换功能,暂时不能自动
admin 我试着改了一下Target.updateCppProperties函数,每次不再从文件里读,而是完全重新构建obj,这样c_cpp_properties.json里就只包含一个Target的配置了,然后在KeilProject.setActiveTarget函数里执行当前target的load(),就能实现随着target切换自动切换c_cpp_properties.json配置了。
dy228a 这样也行 👍