说明

这里是为了学习gn+ninja而从网上找了一些比较好的文章,并且通过实践一步步将demo做了出来,首先要感谢这篇文章,这个demo就是基于这篇文章来编写的,里面的原理这里不再重复,只是记录一下在开发过程中遇到的几个问题,后面会把我的源码放在附件中

另外,linux下简单的helloword工程源码,可以参考我的另外一篇文章

遇到的问题及解决

  • 1. windowns版本的gn+ninja下载

gn+ninja编译工具是google开发的,gn的源码在googlesources上,在国内很多人无法下载,但是华为有一个网站可以下载

https://repo.huaweicloud.com/harmonyos/compiler/https://repo.huaweicloud.com/harmonyos/compiler/

  • 2. windowns下怎么创建.gn文件

win系统要求创建的文件必须有名字,也就是说不能创建.gn这类以"."开头的文件;在网上搜索终于找到一个网友的分支,在这里也感谢一下,学到了一个技能:)

windows 如何创建.gitignore 文件 / .ssh 文件夹?解决windows必须键入文件名提示_dianjiong1915的博客-CSDN博客windows不允许.gitignore之类的文件,也不允许.ssh命名的文件夹名。会提示必须输入文件名。要解决这个问题我以前一直是通过bash使用linux命令创建的。最近发现了一个更简便的方法与大家分享:创建.gitignore文件输入.gitignore.即可越过此限制,回车后文件名会修改为.gitignore。参考:https://winscp...https://blog.csdn.net/dianjiong1915/article/details/101860943其实很简单,就是将文件名改成".gn.",注意gn后面还有一个“.”,这样就可以了

  • 3. 文件中toolchain定义时,ninja编译一直报找不到文件

这个我尝试了很长时间,将mdk安装路径放入系统的环境变量中,将$MDK_DIR改成%MDK_DIR%还是有问题;

后面在gn命令执行过后,手工修改toolchain.ninja,把工具链中$MDK_DIR换成mdk真实的安装路径"E:\Keil_v5"之后就OK了,很长时间内没想明白原因。最后发现是自己对gn文件理解还是不够深入

在gn文件中引用定义的变量就是使用"$"开头,这说明MDK_DIR是在gn文件中定义的一个变量,所以我在BUILDCONFIG.gn中定义了MDK_DIR="E:\Keil_v5",然后在工具链定义中再引用此变量,ninja编译OK

我这个demo是基于正点原子的战舰STM32开发板(stm32f103zet6)开发的(因为手里只有这个板子),其他板子也可以按define_me_freedom文章的方法来开发

(我去,好久没在CSDN上发布文章了,现在竟然改了规则,不能直接在文章后面发布附件了,我单独上传了资源,名字是ninja_test.rar)

GitHub 加速计划 / ni / ninja
10.88 K
1.57 K
下载
a small build system with a focus on speed
最近提交(Master分支:2 个月前 )
dcefb838 Fix typo: Explaantions -> Explanations 4 个月前
2f19d3a0 - 4 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐