最近在搞Unreal Engine。
UE4.25 配合VSCode有个bug,就是生成的VSCode project文件的C++描述部分有误,导致VSCode的intellisense不能正常工作,表现为找不到如下文件
UBT_COMPILED_PLATFORM/UBT_COMPILED_PLATFORMPlatformCompilerPreSetup.h
并伴随着自动补全和语法高亮出现问题,也无法在输入函数参数时获得函数定义的提示,更无法鼠标悬停获得对象的定义描述。
经过Google后发现,这个bug在UE4.26似乎得到了修正。但是目前的项目适配4.25,还不能轻易升级UE,所以得想个解决办法。
在一番Google之后,发现是UE4.25在生成VSCode的 .vscode/c_cpp_properties.json
文件时,未正确定义defines
项目而造成的,这里的网友提供了在windows系统上的解决方案。大致就是把一个之前版本好用的defines
复制到当前的c_cpp_properties.json
文件中,并根据项目名称做必要的修正。
不过我的问题更特殊,因为我是在Linux上。。。
于是照着这个思路,找了一台安装了UE4.24的Linux,生成了一个VSCode的project,把它的c_cpp_properties.json
文件中的defines
部分复制过来,根据项目名称进行必要的修改,具体为:
UE_PROJECT_NAME
的赋值为项目名。"<PROJECT_NAME_IN_CAPITAL>_VTABLE=DLLEXPORT_VTABLE"
和"<PROJECT_NAME_IN_CAPITAL>_API="
两处需要替换为项目名的 全大写 形式。
保存,然后观察intellisense的工作情况。在我的计算机上,VSCode可以找到所有头文件,并且能够进行正确的语法高亮、自动补全和定义显示了。
本机系统:
Ubuntu 20.04, UE4.25.4。
源系统:
Ubuntu 18.04, UE4.24.不知道。
defines
的内容可以从这里获取。
又可以愉快的玩耍了~