GN使用筆記

2021-08-20 04:03:57 字數 2339 閱讀 1356

**:

之前介紹過gyp,它是google早期用來維護chromium專案的meta-build system,gn則是用來替代gyp的工具,目前chromium及相關的開源專案都遷移到基於gn來管理。並且gn是基於c++編寫,效率上比基於python的gyp快了近20倍。

參考:git clone

雖然depot_tools已經帶了gn,但它其實只是乙個shell指令碼,直接使用會報錯,找不到真正的gn二進位制檔案。

自己編譯可以基於gn的git倉庫編譯,可以參考:

#!/bin/bash

set -e

set -v

# get the sources

mkdir gn-standalone

cd gn-standalone

mkdir tools

cd tools

git clone

cd ..

mkdir -p third_party/libevent

cd third_party/libevent

wget --no-check-certificate

tar -xvzf libevent.tar.gz

cd ../..

git clone

git clone

git clone /config

mkdir testing

cd testing

git clone

cd ..

# build

cd tools/gn

./bootstrap/bootstrap.py -s

# at this point, the resulting binary is at:

# gn-standalone/out/release/gn

gn的例子可以參考gn的git倉庫中帶的example來開始。比如,以下測試的**根目錄是src

.gn檔案內容

buildconfig = "//build/buildconfig.gn"
.gn檔案所在的目錄是gn工具認定的工程的source root,.gn的內容基本就是指定buildconfig,//是指source root所在的路徑。

gn的build目錄的配置可以參考gn倉庫中example的build配置,但是需要適當修改在才能正常使用

buildconfig.gn內容如下:

set_default_toolchain("//build/toolchains:gcc")

cflags_cc = [ "-std=c++11" ]

第一行指定要使用的 toolchain,//build/toolchains:gcc指的是build/toolchains/build.gn裡面定義的 gcc toolchain

因為gn沒有內建的toolchain規則,都需要自己定義

# use of this source code is governed by a bsd-style license that can be

# found in the license file.

toolchain("gcc")

tool("cxx")

tool("alink")

tool("solink")

tool("link")

tool("stamp")

tool("copy")

}還可以參考下 chromium配置toolchain的做法

group("default")
executable("hello_world")
#include

intmain

()

$ gn gen out/def --ide=xcode

generating xcode projects took 0ms

done. made 2 targets from 5 files in 6ms

$$ ninja -c out/def

ninja: entering directory `out/def'

[3/3] stamp obj/default.stamp

$$ ./out/def/hello_world

hello world

Vim 使用筆記

set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...

xemacs使用筆記

xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...

TreeView使用筆記

treeview由節點構成,建樹通過對treeview.items屬性進行操作。items是乙個ttreenodes物件,這是乙個ttreenode集。一 針對ttreenodes,也就是 treeview.items,有這些屬性 1 count,節點個數。2 item index 通過index得...