EasyClangComplete CMake环境修复

当使用EasyClangComplete插件在Sublime中编写代码时,如果项目或其上层有CMakeLists.txt文件,插件尝试调用CMake可能导致问题。若无CMake或配置不正确,会出现#include提示和自动完成异常。修复方法包括安装CMake,修改CMake命令参数,如在非标准环境(如WindowsMingW)下指定-GMinGWMakefiles。如果遇到CMakeCache.txt冲突,需删除相关临时文件夹的内容以重置配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sublime使用EasyClangComplete插件写代码时,如果你的文档目录或它的上层目录下有一个CMakeLists.txt文件,那么插件会去调用cmake命令编译这个文件。如果系统没有装cmake或者cmake编译出错,就会导致编辑器本身出现一些奇怪的现象,比如:

  1. #include无法弹出quick panel选取头文件
  2. 选择文本后键入双引号无法自动前后包住文本,而是会将其删掉

这是在EasyClangComplete的配置文件中规定的:

在这里插入图片描述

要修复这个问题,除了直接把配置文件注释掉,还有以下方案:

  1. 安装CMake,使插件能够调用cmake命令
  2. (针对custom的编译环境)修改cmake命令参数,以符合本机环境

CMake的安装直接去官网下载安装包即可,略过。

针对非标准的编译环境,比如在windows下不使用msvc,而是mingw,还需要向cmake命令指定合适的编译参数,不然会弹出如下找不到nmake的报错:

Error in file:
PATH\CMakeLists.txt

-- Building for: NMake Makefiles
CMake Error at CMakeLists.txt:5 (project):
  Running

     'nmake' '-?'

       failed with:

          系统找不到指定的文件。


          CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
          CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
          -- Configuring incomplete, errors occurred!
          

指定cmake编译器的方式在命令行中如下

cmake -G "MinGW Makefiles"

对应的CMake文档描述

在EasyClangComplete中,需要修改对应的配置文件

在这里插入图片描述

"flags_sources": [
    {
        "file": "CMakeLists.txt",
        "flags": ["-GMinGW Makefiles"]	// 增加部分
    },
    {"file": "compile_commands.json"},
    {"file": "CppProperties.json"},
    {"file": "c_cpp_properties.json"},
    {"file": ".clang_complete"},
],

注意在插件官方文档中flag名字为ecc_flags_sources,可能是旧版本的名字未更新,实际应该没有ecc_前缀。另外这里是复制了插件默认配置中的内容,写到了对应的user配置中,养成尽量不动原配置文件的好习惯。

实测不能像命令行中一样,写成"flags": ["-G \"MinGW Makefiles\""],会产生报错,原因未知。

最后可能还会遇到如下问题:

Error in file:
PATH\CMakeLists.txt

CMake Error: Error: generator : MinGW Makefiles
Does not match the generator used previously: NMake Makefiles
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.

这是由于插件自己生成的缓存文件CMakeCache.txt和更新后的编译器参数相冲突,手动删除CMakeCache.txt即可。用everything软件搜索该文件,发现在以下路径:

C:\Users\【用户名】\AppData\Local\Temp\EasyClangComplete\cmake_builds\xxx

将该路径下的内容全部删去,下次插件就会重新从头开始按照正确的编译器参数生成所需文件了。到此为止问题应该得到解决。


Tip: 利用EasyClangComplete的verbose选项,在上面对插件进行debug的时候可以显示更多信息:

"verbose" : true,

所有的调试信息都是在sublime console中显示的,调出方式如下:

在这里插入图片描述
在上面的图标处右键选择console:
在这里插入图片描述
或者在菜单栏View->Show Console也可以。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值