学习野火STM32,液晶显示工程,
还是和前几天一样,把工程转换成CLion,因为试过了,Clion创建STM32工程的时候,不支持中文名,但为了和野火的对应,所以我是这么命名的: LCD_Display_CN_EN(FontLib_In_Flash)。工程创建完,跟以前一样走流程(详见之前的文章),但是到CMake那里,就出了问题:
搜索了一圈,没有找到合适的答案,心想几天前这么做都没问题,怎么突然就出幺蛾子了。所以怀疑是命名的问题,首先怀疑的就是命名中的括号'()',所以我用全局搜索的方法替换了所有出现
LCD_Display_CN_EN(FontLib_In_Flash)
这个名字的地方,共有36处,替换成:
LCD_Display_CN_EN_FontLib_In_Flash
然后就没问题了,所以确实是括号的问题
(中间也除了一些问题,后来才搞明白,但对于命名来说)
后来又通过验证,发现会影响CMake语句的是 .cproject 这个文件,这个文件里有4处出现工程名的地方,分别是 27行,105行,159行(2处):
因为我替换工程名的时候,这个.cproject文件中也替换了,这个地方一旦改动,CMakeList.txt会发生变化:
👆17行Project后面的名字发生改变。
👆52/56这关键的两行也会因此被改变成默认的👇:
于是CMakeLists.txt会出问题
顺便提一下,改了.project文件后,开发板配置文件也会丢失,弹出需要重选的界面:
把52/56行重新该回去就好了:
对于Run 烧录下载来说,有两处是关键:
17行:
和69行(为什么重要,后面会提到):
17行的Project名,不一定非要跟工程名一致,可以手动修改,例如:
这个修改后的名字,会决定Build时生成的文件:
Build后,此时如果直接点击Run,会出现以下提示:
这时候,修改Run配置:
打开后Target和Executable binary那里都变红了(请忽略配置本身的名字abcde和红色部分的名字uvxyz123,因为我写文章前做了各种尝试,所以好几次修改命名,有点混乱),总之红色代表不可用(后面括号里有灰色字样 Not Found):
点击Target或 Executable binary 那个位置 ,会出现下拉选项:
发现唯一的可选项就是 qwerty.elf,也就是刚刚在CMakeLists.txt 第17行修改后的名称qwerty,可见这两处是关联的。
好,选择它,之后另一个选框中也相应地自动被选中:
apply/OK后,回到主界面 Run:
就成功了。
CMakeLists.txt中的第69行为什么重要,这里的${PROJECT_NAME}(这看上去是一个变量,项目名称),如果我对它做一些改动
例如,改成固定名比如 qwerty.elf,没问题可以通过下载烧录:
如果改成别的,比如 abcde.elf :
则显示build都不成功,而此前其实我已经build成功并生成过 abcde.elf文件,所以它是不检测的,run应该是建立在现build的基础上。
作为一个小白,再稍稍研究下,打开Run 配置,虽然target那里没法选择,与17行的名字锁死了。但Executable那里可以选择别的elf文件:
但即便这样也还是没法build和run的:
但我们可以合理地推测,如果对17行修改一下,应该就可以了吧:
结果:
显示错误:
ninja: error: unknown target 'qwerty.elf'
那就修改一下咯,下拉菜单却显示改不了:
刷新一下CMake,再打开run配置,Target那里变红了:
点击下拉就可以选:
Apply/OK,再build/run, 便能顺利通过:
总结:
.cproject里的工程名修改会导致CMakeLists.txt变动
CMakeLists.txt 17行的名称会决定 elf文件名,也会决定run配置的Target那里的名称
69行的${PROJECT_NAME}可以修改,但需要和17行的名称一致才可以顺利 build和run.
不建议修改${PROJECT_NAME},保持原样,修改17行就够了。