欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > GN ninja 工程化构建例程

GN ninja 工程化构建例程

2025/10/29 9:00:24 来源:https://blog.csdn.net/Allen_Spring/article/details/147340303  浏览:    关键词: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 =

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词