当前位置: 首页 > ds >正文

GN ninja 工程化构建例程

请添加图片描述

文章目录

  • 1. 前言✨
  • 2. 工程实例🚩
    • 2.1 工程目录结构
    • 2.2 工程顶层.gn文件
    • 2.3 工具链配置.gn文件
    • 2.4 编译配置.gn文件
    • 2.5 编译目标配置.gn文件
    • 2.6 工程接口文件
    • 2.7 动态库编译.gn文件
    • 2.8 动态库源文件
    • 2.9 静态库编译.gn文件
    • 2.10 静态库源文件
    • 2.11 主程序编译.gn文件
    • 2.12 主程序源文件
    • 2.13 工程顶层.gn文件
  • 3. 编译&测试
  • 参考


1. 前言✨

本文通过一个简单的C语言工程构建实例,主要描述通过GN和ninjia如何构建、编译。

各位小伙伴,如果你是刚接触GN、ninja构建,这个实例工程非常适合你参考、学习,该实例包括静态库、动态库的编译、链接,还有对编译工具链的配置,编译输出的配置等,如果对你有帮助,请点赞👍👍👍、转发,评论&交流😊。💐💐💐🎉🎉🎉


2. 工程实例🚩

2.1 工程目录结构

.
├── BUILD.gn
├── README.md
├── build
│   ├── BUILD.gn
│   ├── BUILDCONFIG.gn
│   └── toolchains
│       └── BUILD.gn
├── include
│   └── utils.h
├── lib
│   ├── shared
│   │   ├── BUILD.gn
│   │   └── dlib.c
│   └── static
│       ├── BUILD.gn
│       └── slib.c
├── out
│   └── Default
│       ├── args.gn
│       ├── build.ninja
│       ├── build.ninja.d
│       ├── build.ninja.stamp
│       ├── libshared.so
│       ├── main
│       ├── obj
│       └── toolchain.ninja
├── src
│   └── main
│       ├── BUILD.gn
│       └── main.c
└── third_party13 directories, 19 files

2.2 工程顶层.gn文件

BUILD.gn

# 顶层group定义
group("all") {deps = ["//lib/static","//lib/shared","//src/main"]
}

2.3 工具链配置.gn文件

build/toolchains/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 =
http://www.xdnf.cn/news/364.html

相关文章:

  • 定时器复习DSP【2025/4/18】
  • 项目之在线OJ
  • 工作督导 | 具有边缘型人格障碍倾向的高危来访者,咨询师如何应对?
  • 2025年危化品安全员考试题库及答案
  • 物联网平台管理系统
  • Origin LabTalk
  • rLLM - 使LLM的强化学习民主化
  • 用于数学定理和逻辑推理的符号系统
  • 【TVM教程】microTVM TFLite 指南
  • 从零开始学Python游戏编程31-类3
  • AI 数字短视频系统AI数字人源码开发:开启短视频行业发展新维度​
  • AUTOSAR图解==>AUTOSAR_SWS_E2ETransformer
  • 图像分类标注小工具
  • ABAP OLE
  • 『前端样式分享』联系我们卡片式布局 自适应屏幕 hover动效 在wikijs中使用 (代码拿来即用)
  • 使用Gone MCP 组件编写MCP Server
  • 《系统分析师-第三阶段—总结(一)》
  • LUN Capacity(Blocks) 是什么意思
  • Java项目—— 拼图小游戏(进阶版)
  • 表征流体作用力的参数及其特性
  • 2025年MathorCup数学应用挑战赛【B题成品论文第二版】(免费分享)
  • Allure测试报告按测试终端和测试类型智能分类查看
  • 杭州小红书代运营公司-品融电商:全域增长策略的实践者
  • Oracle 19c部署之手工建库(四)
  • Deno 包管理器:现代 JavaScript/TypeScript 运行时的新范式
  • 标题:民锋视角下的节奏演变逻辑:探寻市场波动的内在秩序
  • 网络互连与互联网3
  • SPWM-H桥逆变器工作原理
  • 关于防火墙
  • 解决 pip install tts 报错问题-—SadTalker的AI数字人视频—未来之窗超算中心