在我们配置好STM32CubeMX+CLion的开发环境后,我们通常会愉快的创建一个tutorial工程,这时候一切正常。但是!当我们第二次打开工程继续工作时就会发生如下的一个BUG,令人摸不着头脑:
BUG叙述与具体错误表现:
头一次看到这个BUG的时候我是相当淡定的,途中红色部分的”untitled.elf”一般对应你的工程名称,具体的意思是找不到目标,也就是说CMake编译工具无法确定你要编译输出的是个什么玩意儿,但是IDE又告诉他有这么个结果需要编译,自然就产生了错误。
一般而言,这个错误都是由于CMake工具链配置错误或者CMakeLists.txt文件加载不正确导致的,通常覆写一下TXT的target部分或者干脆Reload工程就好了。
但是!!!我发现无法重新加载Cmake工程,甚至连CMake选项都被标记为不可用的灰色了!!!WTF!!!因此上述BUG可以总结为如下综合症状:
- CLion开发环境配置完全没有问题(这是大前提)
- CLion能够正常打开并且识别上次保存的运行配置(当然包括Cmake和OpenOCD)
- CMake运行配置找不到编译需要产生的xxx.elf,也就是target
- 设置>构建、执行、部署>CMake 查看配置和工具链完全没有任何问题
- 无法加载或者卸载CMake工程,系统完全不识别CMakeList.txt文件
懒人专用治标方法:
从Clion中重新打开.ioc文件运行Cube生成代码(Generate Code),居然就好了!!(没天理啊,我真的不李姐,这不河里!)声明:此方法完全不保证此BUG不重复出现。并且如果你的.idea文件夹不在gitignore列表之中并且你使用git管理版本,那么当你切换电脑的时候,这个BUG会像一个幽灵一样出现在你另外一台电脑上。
真正的问题所在,老中医治标又治本:
经过若干次尝试,我稳定的复现了这个BUG并且找到了问题的根本原因:由于STM32CubeMX糟糕的兼容性,导致CLion无法正确识别CMake所在的工程目录!因此CLion完全不认为工程文件中应当有Cmake出现!方法如下:
修改CLion工程目录下的隐藏目录.idea中的文件misc.xml文件,在此文件中指定CMake的工作目录为CLion工程所在目录即可。如果没有该文件可以重新创建一个,文件所含内容如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>
完成上述操作后保存文件刷新工程即可,只要此文件不被删除或者覆盖,我们就可以一劳永逸的解决这个BUG,最后,截图显示一下文件位置:
如图所示红框为隐藏的.idea目录,将CLion左侧文件树的显示类型从项目改为项目文件就可以看到隐藏的文件夹啦,当然也可以直接从文件管理器中打开,显示隐藏文件方法:
- Windows系统: 资源管理器>文件>查看 中勾选 隐藏文件可见
- MacOS系统: 在任何一个访达窗口中组合按键 Shift+Command+> 即可
- Linux发行版: 都用Linux了建议直接终端改咯
问题是我完全符合这个问题,且misc.xml配置也没问题,咋搞
您能否更加详细的描述您的问题?请问您是否尝试过先卸载掉既有的CMake,或者右键CMakeList.txt尝试重新加载CMake?并且建议您在设置>构建,执行,部署>CMake之中选定CMake环境为MinGW Bundle的CMake环境。建议您评论时留下联系方式。
修改CLion工程目录下的隐藏目录.idea中的文件misc.xml文件,在此文件中指定CMake的工作目录为CLion工程所在目录即可。请问一下,这个怎么指定欸,可不可以给个示例捏,如需联系,这是我的邮箱地址3406192260@qq.com,万分感谢
已回复您的邮箱,事实上文章中的代码块之中的$PROJECT_DIR$就是一个宏定义,这个宏定义是JetBrains基本上所有IDE都支持的,用于指定当前工程目录
收到您的恢复了,感谢指点,刚才无法重新加载cmake的时候,我看.idea目录是找不到misc.xml文件的,但是后面尝试修复IDE,成功加载项目后,便出现了这个misc.xml这个文件,而且里面的内容跟您建议修改的是一样的