**:
之前介紹過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得...