symic 发表于 2022-4-9 23:17

小熊派-鸿蒙-季 BearPi-HM Nano 3 + 在vscode下进行编写源码过程分析

<p>上次按照教程,一步一步的开始hello_world的例程的开发。由于涉及的步骤较多,一时也没太弄明的是怎么就成功的。这次先停一下,对hello_world的开发过程进行分析梳理。</p>

<p>由于上次使用的是vim操作,在这种多文件构成的工程目录下,还是很不直观,为此,在ubuntu操作系统下下载了vscode,并配置了C和GN文件的高亮插件,这样效率高起来的。需要注意的是vscode只是用来修改与查看代码使用的,真正来编译还是在终端下通过hb命令来完成。</p>

<p>这里插一个小经验,在使用hb build 命令时,必须在/home/bearpi/proj/bearpi-hm_micro_small目录下,否则在其它目录下会重新下载。之所以在这个目录下,也可能是第一次使用hb build命令时在这个目录下下载过,而其它目录下不支持。也可能是hb是在这个目录的根目录下,目前没仔细调查。</p>

<p>在vscode下可以直观地看到目录结构。这里需要编辑的文件主要集中在applications、build、vendor下。</p>

<p>1、applications文件夹下</p>

<p>主要用于存放源代码 。按习惯一般每个应用程序都在建有一个文件夹,里边至少存放一个c文件和一个gn文件,c为业务代码,BUILD.gn为编译脚本</p>

<p>hello_world.c比较简单,就是printf信息。这里主要看看BUILD.gn</p>

<pre>
<code>###首先导入 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",
    ]
}</code></pre>

<p>这里的my_app要注意下面有对应的地方。</p>

<p>2、build文件夹下</p>

<p>接下来处理两个json,其中一个是build/lite/components/applications.json,主要是在&quot;components&quot;: []中添加一个{},主要对新建的组件名称、目录、目标文件进行声明。</p>

<p>3、vendor文件夹下</p>

<p>另一个json文件是vendor/bearpi/bearpi_hm_micro/config.json,主要是在&quot;subsystem&quot;: &quot;applications&quot;,下添加单板配置文件,内容比较简单,</p>

<pre>
<code>{
"subsystem": "applications",
    "components": [
      { "component": "bearpi_sample_app", "features":[] },
      { "component": "my_sample", "features":[] },
      { "component": "bearpi_screensaver_app", "features":[] }
    ]
},</code></pre>

<p>最后,就可以在终端编译后,通过stm32Programer下载到开发板上,在Moba里输入指令&ldquo;./bin/hello_world&rdquo;执行写入的demo程序</p>

<p>总结一下,主要过程(参考gitee教程)</p>

<ol>
        <li>在config.json中添加&quot;my_sample&quot;组件,&quot;my_sample&quot;组件在applications.json中被定义。</li>
        <li>在my_sample的targets里面添加&quot;my_app&quot;的lite_component名称</li>
        <li>&quot;my_app&quot;字段链接到my_first_app文件下BUILD.gn里面的lite_component。</li>
        <li>lite_component里指定lib库为&quot;hello_world_lib&quot;。</li>
        <li>通过hello_world_lib里面sources来指定要编译的.c文件,并通过output_name来指定生成的可执行程序名称</li>
</ol>

<p>同时注意几个json文件与gn文件内的关系图。可参考如下关联走向图。</p>

<p>只要这个关联关系的名称对应的上,基本都能编译通过。</p>

<p>磨刀不误砍柴工,今天就先到这吧。</p>

lugl4313820 发表于 2022-4-10 08:18

Json的添加,一直是个麻烦活,感觉郁闷的一件事。

freebsder 发表于 2022-4-11 16:57

lugl4313820 发表于 2022-4-10 08:18
Json的添加,一直是个麻烦活,感觉郁闷的一件事。

<p>是的,嵌入式这边老想往互联网上靠,编译环境你一个我一个,json,xml,yml的配置,这完全是没必要的事情。现在搞个单片机还要把互联网配置那一套学一遍。。。</p>

lugl4313820 发表于 2022-4-11 17:52

freebsder 发表于 2022-4-11 16:57
是的,嵌入式这边老想往互联网上靠,编译环境你一个我一个,json,xml,yml的配置,这完全是没必要的事情 ...

<p>以后还请你多多指教,我弄Python整到后面还是用pcycharm弄。</p>

freebsder 发表于 2022-4-12 16:17

lugl4313820 发表于 2022-4-11 17:52
以后还请你多多指教,我弄Python整到后面还是用pcycharm弄。

<p>pcycharm 挺好的呀,IDE没什么不好,不要听别人说什么高手都用记事本。</p>

symic 发表于 2022-8-24 06:48

<p>在ubuntu下打开vscode,可直接输入code</p>
页: [1]
查看完整版本: 小熊派-鸿蒙-季 BearPi-HM Nano 3 + 在vscode下进行编写源码过程分析