google构建工具gn 一入门
gn工具下载
gn文档帮助
gn入门例子
根目录下.gn文件,指定gn配置文件
buildconfig = "//gnconfig/BUILDCONFIG.gn"
根目录下gnconfig文件夹BUILDCONFIG.gn,指定工具链
set_default_toolchain("//gnconfig/toolchain:gcc")
cflags_cc = [ "-std=c++11" ]
根目录下gnconfig/toolchain文件夹BUILD.gn,指定具体平台工具
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
toolchain("gcc") {
tool("cc") {
depfile = "{
{output}}.d"
command = "gcc -MMD -MF $depfile {
{defines}} {
{include_dirs}} {
{cflags}} {
{cflags_c}} -c {
{source}} -o {
{output}}"
depsformat = "gcc"
description = "CC {
{output}}"
outputs = [
"{
{source_out_dir}}/{
{target_output_name}}.{
{source_name_part}}.o",
]
}
tool("cxx") {
depfile = "{
{output}}.d"
command = "g++ -MMD -MF $depfile {
{defines}} {
{include_dirs}} {
{cflags}} {
{cflags_cc}} -c {
{source}} -o {
{output}}"
depsformat = "gcc"
description = "CXX {
{output}}"
outputs = [
"{
{source_out_dir}}/{
{target_output_name}}.{
{source_name_part}}.o",
]
}
tool("alink") {
rspfile = "{
{output}}.rsp"
command = "rm -f {
{output}} && ar rcs {
{output}} @$rspfile"
description = "AR {
{target_output_name}}{
{output_extension}}"
rspfile_content = "{
{inputs}}"
outputs = [
"{
{target_out_dir}}/{
{target_output_name}}{
{output_extension}}",
]
default_output_extension = ".a"
output_prefix = "lib"
}
tool("solink") {
soname = "{
{target_output_name}}{
{output_extension}}" # e.g. "libfoo.so".
sofile = "{
{output_dir}}/$soname"
rspfile = soname + ".rsp"
command = "g++ -shared {
{ldflags}} -o $sofile -Wl,-soname=$soname @$rspfile"
rspfile_content = "-Wl,--whole-archive {
{inputs}} {
{solibs}} -Wl,--no-whole-archive {
{libs}}"
description = "SOLINK $soname"
# Use this for {
{output_extension}} expansions unless a target manually
# overrides it (in which case {
{output_extension}} will be what the target
# specifies).
default_output_extension = ".so"
# Use this for {
{output_dir}} expansions unless a target manually overrides
# it (in which case {
{output_dir}} will be what the target specifies).
default_output_dir = "{
{root_out_dir}}"
outputs = [
sofile,
]
link_output = sofile
depend_output = sofile
output_prefix = "lib"
}
tool("link") {
outfile = "{
{target_output_name}}{
{output_extension}}"
rspfile = "$outfile.rsp"
command = "g++ {
{ldflags}} -o $outfile @$rspfile {
{solibs}} {
{libs}}"
description = "LINK $outfile"
default_output_dir = "{
{root_out_dir}}"
rspfile_content = "{
{inputs}}"
outputs = [
outfile,
]
}
tool("stamp") {
command = "touch {
{output}}"
description = "STAMP {
{output}}"
}
tool("copy") {
command = "cp -af {
{source}} {
{output}}"
description = "COPY {
{source}} {
{output}}"
}
}
根目录BUILD.gn
group("default"){
deps = [
"//src:hello",
]
}
根目录下src文件夹BUILD.gn
executable("hello") {
sources = [
"hello.cpp",
]
}
根目录下src文件夹hello.cpp
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
cout << "main - start ... " << endl;
return 0;
}
上一篇:
Python 安装包管理工具 pip
下一篇:
常用Web安全扫描工具合集
