柚子快报邀请码778899分享:ubuntu GN环境搭建

http://www.51969.com/

GN是一种元构建系统(Meta Build System),而ninja是一个注重速度的构建系统。ninja通常与元构建系统一并使用。常见的有:cmake + make cmake + ninja gn + ninja 。本文要介绍的是gn + ninja的构建方式。

文章目录

ninja安装GN安装1. 安装clang2. 安装gn3. 用gn和ninja编译例程

ninja安装

ninja安装有两种途径,一是通过ubuntu自带的软件库安装,另一个是从GitHub上下载ninja源码自己编译。本文是直接在Ubuntu中下载,如想自己编译,可以根据GitHub上的README.md进行操作。

$ sudo apt install ninja-build

安装完毕后,查询版本,显示出版本号后,说明安装成功。

$ ninja --version

1.10.0

GN安装

1. 安装clang

编译gn需要编译器支持C++17的特性,所以编译器的版本不能太低,经过测试clang至少需要8.0的版本。

$ sudo apt install clang-8

同样的,安装完之后,查询下版本号

$ clang-8 --version

clang version 8.0.0-3~ubuntu18.04.2 (tags/RELEASE_800/final)

Target: x86_64-pc-linux-gnu

Thread model: posix

InstalledDir: /usr/bin

注意到,此时我们输入的命令是clang-8而不是clang,要直接使用clang需要去/usr/bin目录下加入软链接:

$ sudo ln -s ../lib/llvm-8/bin/clang clang

$ sudo ln -s ../lib/llvm-8/bin/clang++ clang++

注意,如果系统本身安装过旧版本的clang,可能会提示failed to create symbolic link 'clang': File exists,此时要么rm -rf clang删除, 要么把上述命令改为ln -snf ../lib/llvm-8/bin/clang clang

修改之后,如下所示,此时再用clang-8就只需要输入clang即可

/usr/bin $ ll|grep clang

lrwxrwxrwx 1 root root 23 Nov 25 14:04 clang -> ../lib/llvm-8/bin/clang*

lrwxrwxrwx 1 root root 25 Nov 25 14:04 clang++ -> ../lib/llvm-8/bin/clang++*

lrwxrwxrwx 1 root root 25 Dec 10 2019 clang++-8 -> ../lib/llvm-8/bin/clang++*

lrwxrwxrwx 1 root root 23 Dec 10 2019 clang-8 -> ../lib/llvm-8/bin/clang*

lrwxrwxrwx 1 root root 27 Dec 10 2019 clang-cpp-8 -> ../lib/llvm-8/bin/clang-cpp*

$ clang --version

clang version 8.0.0-3~ubuntu18.04.2 (tags/RELEASE_800/final)

Target: x86_64-pc-linux-gnu

Thread model: posix

InstalledDir: /usr/bin

2. 安装gn

gn的源码可以从两个地方下载,google官方的需要科学上网,另一个就是GitHub上有fork的仓库,GitHub也上不去的话,就用鸿蒙提供的Gitee的仓库 官方源: https://gn.googlesource.com/gn Github: https://github.com/timniederhausen/gn Gitee: https://gitee.com/openharmony/third_party_gn

git下来代码后,进行编译

$ cd gn

$ python build/gen.py

$ ninja -C out

等待编译结束,跑一下gn的测试代码,显示passed说明gn功能没问题

$ ./out/gn_unittests

[682/682] ImportantFileWriterTest.Basic

PASSED

编译成功后,将gn复制到/usr/bin目录下

$ sudo cp ./out/gn /usr/bin

在任意终端中,输入gn help检测gn是否安装成功

$ gn help

Commands (type "gn help " for more help):

analyze: Analyze which targets are affected by a list of files.

args: Display or configure arguments declared by the build.

check: Check header dependencies.

clean: Cleans the output directory.

clean_stale: Cleans the stale output files from the output directory.

...

3. 用gn和ninja编译例程

在gn仓库中,自带一个例程,路径为gn/example/simple_build

$ cd ./example/simple_build #已在gn仓库目录下

$ gn gen -C out

Done. Made 3 targets from 4 files in 61ms

$ ninja out

ninja: Entering directory `out'

[6/6] LINK hello

运行我们通过gn和ninja编译的程序

$ ./out/hello

Hello, world

至此,我们可以愉快地使用gn来编译代码啦。

本文仅用于本人学习笔记之用,部分内容来源网上,如有侵权,请联系博主删除。

柚子快报邀请码778899分享:ubuntu GN环境搭建

http://www.51969.com/

查看原文