使用Google的gn工具构建C++项目,但是官方的demo构建脚本还是不够简单,这里写一个最简单的构建结构.

目录结构

 


最简单的gn构建 脱离chromium_g++

目录结构


 

必要的几个文件

  • .gn
  • 根目录下的BUIlD.gn
  • BUILDCONFIG.gn

.gn



 


 

# gn help dotfile

buildconfig = "//build/config/BUILDCONFIG.gn"


这里就指定个最简单的buildconfig文件即可.

BUILD.gn



 


 

executable("gn-demo") {
sources = [
"main.cpp"
]
}


代表着要构建可执行文件.

BUILDCONFIG.gn



 


 

set_default_toolchain("//build/config/toolchains:mac")


这里指定了使用的默认工具链

toolchains

build/config/toolchains/BUILD.gn



 


 

toolchain("mac") {

tool("cxx"){
command = "clang++ -c {{source}} -o {{output}}"
outputs = [ "{{source_out_dir}}/{{target_output_name}}.o" ]

}

tool("link"){
exe_name = "{{root_out_dir}}/{{target_output_name}}{{output_extension}}"
command = "clang++ {{inputs}} -o $exe_name"
outputs = ["$exe_name"]
}
}


写工具链的脚本,需要大致明白C++的编译流程.

其中​​cxx​​:代表编译C++,​​link​​代表链接.由于我使用的是Mac,所以这里使用clang进行编译.

构建



 


shell

gn gen out/Debug
ninja -C out/Debug


可执行文件就构建成功了.