7 BUILD.gn文件怎么写,Gn + Ninja编译一个Hello world程序的例子Demo
BUILD.gn文件怎么写,Gn + Ninja编译一个Hello world程序的例子Demo
| 作者 | 将狼才鲸 |
|---|---|
| 创建日期 | 2024-03-11 |
- Ninja安装流程见:一个能直接运行的Ninja例子,build.ninja文件怎么写?
- Gn安装流程见:Ubuntu18.04下安装Gn软件
- 这是一个简单的BUILD.gn配置文件
jim@ubuntu:~/0_Git/third_party_gn/examples/simple_build$ cat 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.executable("hello") {sources = [ "hello.cc" ]deps = [":hello_shared",":hello_static",]
}shared_library("hello_shared") {sources = ["hello_shared.cc","hello_shared.h",]defines = [ "HELLO_SHARED_IMPLEMENTATION" ]
}static_library("hello_static") {sources = ["hello_static.cc","hello_static.h",]
}
-
这是Gn官方的例子,在Gn的源码里面
- 使用Ubuntu系统,安装Git、Ninja、Gn、Clang软件
- git clone git@gitee.com:openharmony/third_party_gn.git 拉取源码,或者:
- https://gitee.com/openharmony/third_party_gn/repository/archive/master.zip 下载源码
-
cd examples/simple_build/ 下载源码后进入其中的子目录
-
ls 先看看里面的文件
jim@ubuntu:~/0_Git/third_party_gn/examples/simple_build$ ls
build BUILD.gn hello.cc hello_shared.cc hello_shared.h hello_static.cc hello_static.h README.md tutorialjim@ubuntu:~/0_Git/third_party_gn/examples/simple_build$ cat hello.cc
// 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.#include <stdio.h>#include "hello_shared.h"
#include "hello_static.h"int main(int argc, char* argv[]) {printf("%s, %s\n", GetStaticText(), GetSharedText());return 0;
}
- gn gen -C out 按Gn规则文件生成Ninja配置文件
jim@ubuntu:~/0_Git/third_party_gn/examples/simple_build$ gn gen -C out
Done. Made 3 targets from 4 files in 45ms
- cd out/ 进入输出目录,看看生成的什么内容
jim@ubuntu:~/0_Git/third_party_gn/examples/simple_build$ tree out/
out/
├── args.gn
├── build.ninja
├── build.ninja.d
├── obj
│ ├── hello.ninja
│ ├── hello_shared.ninja
│ └── hello_static.ninja
└── toolchain.ninja1 directory, 7 filesjim@ubuntu:~/0_Git/third_party_gn/examples/simple_build$ cat out/build.ninja
ninja_required_version = 1.7.2rule gncommand = ../../../../../../../usr/bin/gn --root=./.. -q --C --regeneration gen .pool = consoledescription = Regenerating ninja filesbuild build.ninja: gngenerator = 1depfile = build.ninja.dsubninja toolchain.ninjabuild hello_shared: phony ./libhello_shared.so
build hello_static: phony obj/libhello_static.a
build $:hello: phony hello
build $:hello_shared: phony ./libhello_shared.so
build $:hello_static: phony obj/libhello_static.abuild all: phony $hello $./libhello_shared.so $obj/libhello_static.adefault all
- ninja 开始编译(和make命令类似)
jim@ubuntu:~/0_Git/third_party_gn/examples/simple_build/out$ ninja
[6/6] LINK hellojim@ubuntu:~/0_Git/third_party_gn/examples/simple_build/out$ tree
.
├── args.gn
├── build.ninja
├── build.ninja.d
├── hello
├── libhello_shared.so
├── obj
│ ├── hello.hello.o
│ ├── hello.ninja
│ ├── hello_shared.ninja
│ ├── hello_static.ninja
│ ├── libhello_shared.hello_shared.o
│ ├── libhello_static.a
│ └── libhello_static.hello_static.o
└── toolchain.ninja1 directory, 13 files
- ./hello 运行编译后的可执行文件
jim@ubuntu:~/0_Git/third_party_gn/examples/simple_build/out$ ./hello
Hello, world
- 参考网址:
- GN环境搭建
相关文章:
7 BUILD.gn文件怎么写,Gn + Ninja编译一个Hello world程序的例子Demo
BUILD.gn文件怎么写,Gn Ninja编译一个Hello world程序的例子Demo 作者将狼才鲸创建日期2024-03-11 Ninja安装流程见:一个能直接运行的Ninja例子,build.ninja文件怎么写?Gn安装流程见:Ubuntu18.04下安装Gn软件 这是一…...
北京市行政村边界shp数据/北京市乡镇边界/北京市土地利用分类数据
北京是一座有着三千多年历史的古都,在不同的朝代有着不同的称谓,大致算起来有二十多个别称。北京地势西北高、东南低。西部、北部和东北部三面环山,东南部是一片缓缓向渤海倾斜的平原。境内流经的主要河流有:永定河、潮白河、北运…...
力扣--动态规划/深度优先算法/回溯算法93.复原IP地址
这题主要用了动态规划和回溯算法。 动态规划数组初始化(DP数组): 首先,创建一个二维数组dp,用于记录字符串中哪些部分是合法的IP地址。对字符串进行遍历,同时考虑每个可能的IP地址部分(每部分由1到3个字符组…...
第一次Python小练习题目
1.打印某学校的校训,具体内容如下所示: ****************************** 勤奋 严谨 求实 创新 ****************************** 注意: 第一行和最后一行各有 30 个*号。 答案: school_strs "勤奋 严谨 求实 创新&q…...
[BUG] docker运行Java程序时配置代理-Dhttp.proxyHost后启动报错
[BUG] docker运行Java程序时配置代理-Dhttp.proxyHost后启动报错 bug现象描述 版本:2.0.4(客户端和服务端都是) 环境:私有云环境,只有少量跳板机器可以访问公网,其他机器均通过配置代理方式访问公网 bug现…...
Python网站的搭建和html基础
1.Python网站代码及讲解 一般我们搭建小型的网站就用flask库就行了。 (1)安装flask库 安装完python后,按住windows徽标键和r,弹出“运行”,在里面输入cmd。 回车打开,输入“pip install flask”。 (2&am…...
SpringCloud(21)之SpringCloud Alibaba Nacos实战应用
一、Nacos安装 1.1 Nacos概述 Nacos是Alibaba微服务生态组件中的重要组件之一,主要用它实现应用的动态服务发现、配置管理、 服务管理。Nacos discovery alibaba/spring-cloud-alibaba Wiki GitHub Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简…...
Python 基础语法:基本数据类型(元组)
1 元组(Tuples)概述 1.1 元组的定义与特点 元组(Tuples)是Python中的一个内置数据类型,用于存储一系列有序的元素。元组中的元素可以是任何类型,包括数字、字符串、列表等,且元素之间用逗号…...
vuepress-theme-vdoing博客搭建教程
搭建流程 前言 这是笔者搭建个人博客所经历的流程,特附上笔记 笔者个人博客地址:沉梦听雨的编程指南 一、主题介绍 本博客使用的主题为:vuepress-theme-vdoing,相关介绍和使用方法可以参考该主题的官方文档 官方文档快速上手…...
ICC2:create terminal参考脚本
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 set list "" set i 0 ; set length xx set width xx foreach port $list { if {$i == 0} { set startx 0 set starty 0 } else { set sta…...
并行计算CUDA DEMO
//并行计算CUDA DEMO #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size); __global__ void addKernel(int *c, const int …...
【linux线程(一)】什么是线程?怎样操作线程?
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:Linux从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学更多操作系统知识 🔝🔝 Linux线程 1. 前言2. 什么是线…...
python-0002-linux安装pycharm
下载软件包 下载地址:https://download.csdn.net/download/qq_41833259/88944791 安装 # 解压 tar -zxvf 你的软件包 # 进入软件解压后的路径,如解压到了/home/soft/pycharm cd /home/soft/pycharm cd bin # 执行启动命令 sh pycharm.sh # 等待软件启…...
扭蛋机小程序,扭蛋与互联网结合下的商机
扭蛋机作为一种娱乐消费模式,受众群体不再局限于儿童,也吸引了众多的年轻消费者。扭蛋机具有较大的随机性,玩具商品随机掉落,在购买前消费者完全不知道扭蛋中的商品是什么,这种未知性带来的惊喜感是吸引众多消费者的主…...
pytorch CV入门3-预训练模型与迁移学习
专栏链接:https://blog.csdn.net/qq_33345365/category_12578430.html 初次编辑:2024/3/7;最后编辑:2024/3/8 参考网站-微软教程:https://learn.microsoft.com/en-us/training/modules/intro-computer-vision-pytorc…...
Swift SwiftUI 学习笔记 2024
Swift SwiftUI 学习笔记 2024 一、资源 视频资源 StanfordUnivercity 公开课 2023: https://cs193p.sites.stanford.edu/2023 教程 Swift 初识:基础语法:https://docs.swift.org/swift-book/documentation/the-swift-programming-language/guidedtour/…...
【Stable Diffusion】入门:原理简介+应用安装(Windows)+生成步骤
【Stable Diffusion】入门:原理简介应用安装(Windows)生成步骤 原理简介应用安装 原理简介 稳定扩散生成模型(Stable Diffusion)是一种潜在的文本到图像扩散模型,能够在给定任何文本输入的情况下生成照片般逼真的图像。 应用安…...
【栈】第十二届蓝桥杯省赛第一场C++ B组/研究生组《双向排序》(c++)
【题目描述】 给定序列 (a1,a2,⋅⋅⋅,an)(1,2,⋅⋅⋅,n),即 aii。 小蓝将对这个序列进行 m 次操作,每次可能是将 a1,a2,⋅⋅⋅,aqi 降序排列,或者将 aqi,aqi1,⋅⋅⋅,an 升序排列。 请求出操作完成后的序列。 【输入格式】 输入的第一行…...
Gitea 安装和配置
Gitea 安装和配置: http://coffeelatte.vip.cpolar.top/post/software/applications/gitea/gitea_安装和配置/ 文章目录 Gitea 安装和配置: <http://coffeelatte.vip.cpolar.top/post/software/applications/gitea/gitea_%E5%AE%89%E8%A3%85%E5%92%8C%E9%85%8D%E7%BD%AE/>…...
CEF JS与c++能够交互的原理 以及 JS 调用C++的流程分析
相关章节:CEF 之 Render进程 与 Browser进程通信 目录 一、JS与c++能够交互的原理 二、JS调用C++ 流程梳理...
基于STM32与华为云IoT的智能衣柜开发实战
1. 项目概述这个智能衣柜项目基于STM32微控制器开发,通过华为云IoT平台实现远程监控与控制功能。作为一名嵌入式开发工程师,我最近完成了这个项目的原型开发,它能够实时监测衣柜内的温湿度、衣物存储状态,并通过手机APP进行远程管…...
LANs.py源码深度剖析:理解多线程异步数据包处理机制
LANs.py源码深度剖析:理解多线程异步数据包处理机制 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一个功能强大的网络嗅探和ARP欺骗工具,专门用于局域网安全测试和…...
Qwen3.5-2B镜像治理:镜像签名验证、SBOM软件物料清单生成、CVE漏洞扫描
Qwen3.5-2B镜像治理:镜像签名验证、SBOM软件物料清单生成、CVE漏洞扫描 1. Qwen3.5-2B轻量化多模态基础模型介绍 Qwen3.5-2B是Qwen3.5系列中的小参数版本(20亿参数),专为低功耗、低门槛部署场景设计。该模型特别适配端侧和边缘设…...
C语言中的泛型尝试:void_ + 函数指针
文章目录C语言中的泛型尝试:void* 函数指针 🧪什么是泛型?🤔C语言中的工具:void* 和函数指针 🛠️代码示例:泛型排序函数 📝进阶示例:泛型链表 📚优缺点分析…...
GraalVM安全性最佳实践(FIPS 140-3合规版):从JNI绑定校验、证书硬编码剔除到Bouncy Castle静态裁剪全流程
第一章:GraalVM静态镜像安全性全景概览GraalVM 静态镜像(Native Image)通过提前编译(AOT)将 Java 应用构建成独立、无依赖的二进制可执行文件,显著减少了运行时攻击面——既消除了 JVM 解释器、JIT 编译器、…...
Java开发者转型大模型开发:优势、路径与实践全指南
在人工智能技术飞速迭代的当下,大模型开发已然成为科技领域的核心赛道,吸引着无数开发者投身其中。作为一名深耕Java领域多年的后端开发者,我经常收到同行的疑问:我们这些长期专注于传统后端开发的人,能否顺利切入大模…...
3分钟搞定APA第7版:微软Word参考文献格式终极配置指南
3分钟搞定APA第7版:微软Word参考文献格式终极配置指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 你是否在为学术论文的参考文献格式而…...
C++ STL 容器线程安全问题分析
C STL容器线程安全问题分析 在多线程编程中,C标准模板库(STL)容器的高效使用一直是开发者关注的焦点。STL容器在设计之初并未充分考虑线程安全性,这使得在多线程环境下直接使用容器可能引发数据竞争、内存错误等问题。本文将深入…...
Sparrow App快速上手:5分钟学会API测试和调试
Sparrow App快速上手:5分钟学会API测试和调试 【免费下载链接】sparrow-app Your next-gen API testing and development tool. 项目地址: https://gitcode.com/gh_mirrors/sp/sparrow-app Sparrow App是一款下一代API测试和开发工具,能帮助开发者…...
《QGIS快速入门与应用基础》268:国土行业标准布局模板
作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...
