小熊派-鸿蒙-季 BearPi-HM Nano 3 + 在vscode下进行编写源码过程分析
[复制链接]
上次按照教程,一步一步的开始hello_world的例程的开发。由于涉及的步骤较多,一时也没太弄明的是怎么就成功的。这次先停一下,对hello_world的开发过程进行分析梳理。
由于上次使用的是vim操作,在这种多文件构成的工程目录下,还是很不直观,为此,在ubuntu操作系统下下载了vscode,并配置了C和GN文件的高亮插件,这样效率高起来的。需要注意的是vscode只是用来修改与查看代码使用的,真正来编译还是在终端下通过hb命令来完成。
这里插一个小经验,在使用hb build 命令时,必须在/home/bearpi/proj/bearpi-hm_micro_small目录下,否则在其它目录下会重新下载。之所以在这个目录下,也可能是第一次使用hb build命令时在这个目录下下载过,而其它目录下不支持。也可能是hb是在这个目录的根目录下,目前没仔细调查。
在vscode下可以直观地看到目录结构。这里需要编辑的文件主要集中在applications、build、vendor下。
1、applications文件夹下
主要用于存放源代码 。按习惯一般每个应用程序都在建有一个文件夹,里边至少存放一个c文件和一个gn文件,c为业务代码,BUILD.gn为编译脚本
hello_world.c比较简单,就是printf信息。这里主要看看BUILD.gn
###首先导入 gni 组件,将源码hello_world.c编译成hello_world_lib库文件###
import("//build/lite/config/component/lite_component.gni")
executable("hello_world_lib") {
output_name = "hello_world"###输出的可执行文件名称由output_name定义为hello_world###
sources = [ "hello_world.c" ]###源文件为hello_world.c###
include_dirs = []
defines = []
cflags_c = []
ldflags = []
}
###将hello_world_lib打包成 lite_component,命名为my_app组件###
lite_component("my_app") {
features = [
":hello_world_lib",
]
}
这里的my_app要注意下面有对应的地方。
2、build文件夹下
接下来处理两个json,其中一个是build/lite/components/applications.json,主要是在"components": []中添加一个{},主要对新建的组件名称、目录、目标文件进行声明。
3、vendor文件夹下
另一个json文件是vendor/bearpi/bearpi_hm_micro/config.json,主要是在"subsystem": "applications",下添加单板配置文件,内容比较简单,
{
"subsystem": "applications",
"components": [
{ "component": "bearpi_sample_app", "features":[] },
{ "component": "my_sample", "features":[] },
{ "component": "bearpi_screensaver_app", "features":[] }
]
},
最后,就可以在终端编译后,通过stm32Programer下载到开发板上,在Moba里输入指令“./bin/hello_world”执行写入的demo程序
总结一下,主要过程(参考gitee教程)
- 在config.json中添加"my_sample"组件,"my_sample"组件在applications.json中被定义。
- 在my_sample的targets里面添加"my_app"的lite_component名称
- "my_app"字段链接到my_first_app文件下BUILD.gn里面的lite_component。
- lite_component里指定lib库为"hello_world_lib"。
- 通过hello_world_lib里面sources来指定要编译的.c文件,并通过output_name来指定生成的可执行程序名称
同时注意几个json文件与gn文件内的关系图。可参考如下关联走向图。
只要这个关联关系的名称对应的上,基本都能编译通过。
磨刀不误砍柴工,今天就先到这吧。
|