gn+ninja代替MDK编译工程
说明
这里是为了学习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)
更多推荐
所有评论(0)