GN构建系统常用命令
GN 构建系统常用命令
生成Ninja构建文件
1
gn gen out/Default
编译项目
1
ninja -C out/Default
打开文本编辑器修改构建参数
1
gn args out/Default
清理指定输出目录中的所有生成文件
1
2# 不会删除args.gn文件
gn clean out/Default查找引用了给定源文件的目标
1
gn refs out/Default //path/to/source_file.cpp
编译特定目标
1
2
3
4
5# 编译 base_target 组
ninja -C out base_target
# 编译 logger 共享库
ninja -C out logger如果目标在不同目录中,需要使用完整路径
1
2
3
4
5# 编译 base 目录下的 base_target
ninja -C out //base:base_target
# 编译 logger 共享库
ninja -C out //base/logger:logger列出所有构建目标
1
2
3
4
5
6
7
8
9# 列出所有构建目标
gn ls out
# 列出所有构建目标(含路径)
gn ls out --as=output
# 列出所有构建目标及其类型
gn ls out --type=group # 只显示 group 类型
gn ls out --type=shared_library # 只显示共享库编译多个特定目标
1
2
3
4
5# 编译 base_target 和 logger
ninja -C out base_target logger
# 使用完整路径编译多个目标
ninja -C out //base:base_target //base/logger:logger使用
GN命令直接编译1
2
3
4
5# 生成 base_target 的构建文件
gn gen out --filters=//base:base_target
# 然后编译
ninja -C out依赖关系编译
1
2
3
4
5# 编译目标及其所有依赖项
ninja -C out base_target:all
# 只编译直接依赖项
ninja -C out base_target:deps查看构建目标信息
1
2
3
4
5
6
7
8# 查看目标描述
gn desc out //base:base_target
# 查看目标依赖树
gn desc out //base:base_target deps --tree
# 查看目标包含的文件
gn desc out //base:base_target sources使用技巧
1
2
3
4
5
6
7
8# 并行编译(使用多核)
ninja -C out -j$(nproc) base_target
# 显示详细编译输出
ninja -C out -v base_target
# 只检查而不实际编译
ninja -C out -n base_target
参考资料
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 John Ding!