webrtc gn 编译环境-- 制作第一个 helloworld 程序

第一篇文章中,我们已经完成了对于 webrtc Android 源码的下载,今天我们一定要完成一个hello world程序。

注意:
由于谷歌升级很快,也许很快我的这篇文章也会变得不适用了,据我所知17年的gn规则,到现在变化很大,很多都不适用了,我目前的版本是2018年8月份的,大家注意.

这对我们由浅入深的研究webrtc 是很有必要的.

首先我们回忆一下我们如果要把一个.cpp文件编译为一个可执行文件,那么我们需要指定gcc ,指定gcc的编译选项等等内容,这是编译规则,任何编译环境都需要依赖这个基本的原则,gn编译环境也是一样的道理.

**

完整的代码大家可以再这里下载: 链接: https://pan.baidu.com/s/1I3CQ0Aumf_sOuo__Q28hMg 密码: yhrg

**

首先大家看我的程序的目录结构:

目录结构

然后在看下程序的运行结果:

运行结果

最后的输出结果:
hello world

已经实现了输出.

buildtools是什么? 在第一篇中,我们已经下载了webrtc android的源码。在源码的src目录下就有buildtools文件夹,把这个文件夹拷贝到我们的工程目录下.

//注意以.开头的文件名在linux下都是隐藏文件,需要使用ll 或者ls -all 才可以查看.
.gclient文件必须有,否则会报类似下面的错误:

Traceback (most recent call last):
  File "/webrtc/depot_tools/gn.py", line 71, in <module>
    sys.exit(main(sys.argv))
  File "/webrtc/depot_tools/gn.py", line 49, in main
    'gn', 'gn' + gclient_utils.GetExeSuffix())
  File "/usr/lib/python2.7/posixpath.py", line 70, in join
    elif path == '' or path.endswith('/'):
AttributeError: 'NoneType' object has no attribute 'endswith'

BUILD.gn文件内容如下:

executable("hello") {
    sources=[
      "main.c"
     ]

    deps=[]
}

相对来说比较好理解,编译main.c生成可执行文件hello.

.gn文件:

buildconfig = "//build/BUILDCONFIG.gn"

//代表根目录,buildconfig是必须存在的,build/BUILDCONFIG.gn实际上是指定使用哪一个gcc.

在这里我要说一下注意事项:

我们已经下载的depot_tools里面是有gn的shell脚本的,但是却没有可执行文件gn.

这个shell脚本可检测你的操作系统,并且在你的工程目录的buildtools目录下根据你的平台寻找真正的可执行文件gn.

比如我的操作系统是linux 64位,我的工程位于gn_helloworld目录下,那么真正的gn可执行文件其实是在:

/gn_helloworld/buildtools/linux64/gn

猜你喜欢

转载自blog.csdn.net/zhangkai19890929/article/details/81904517