首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何配置GN (谷歌的生成忍者)/Ninja来使用不同的clang工具链

GN (谷歌的生成忍者)是谷歌开发的一种构建系统,用于生成高效的构建文件。Ninja是GN生成的构建文件的执行器。配置GN/Ninja来使用不同的clang工具链可以通过以下步骤完成:

  1. 安装clang工具链:首先,需要安装所需的clang工具链。可以从clang官方网站下载并安装clang编译器。
  2. 配置GN文件:GN使用BUILD.gn文件来描述项目的构建配置。在项目的根目录下创建一个名为BUILD.gn的文件,并添加以下内容:
代码语言:txt
复制
import("//build/config/compiler/BUILD.gn")

# 配置clang工具链路径
clang_base_path = "/path/to/clang"

# 配置clang编译器路径
clang_cc = clang_base_path + "/bin/clang"
clang_cxx = clang_base_path + "/bin/clang++"

# 配置clang链接器路径
clang_ld = clang_base_path + "/bin/ld"

# 配置GN使用的编译器和链接器
gn("clang") {
  cflags = [ "-cc", clang_cc ]
  cflags_c = [ "-cc", clang_cc ]
  cflags_cc = [ "-cc", clang_cxx ]
  ldflags = [ "-ld", clang_ld ]
}

# 配置默认的编译器和链接器
config("default") {
  cflags = [ "-cc", "//build/config/compiler:default_cc" ]
  cflags_c = [ "-cc", "//build/config/compiler:default_cc" ]
  cflags_cc = [ "-cc", "//build/config/compiler:default_cxx" ]
  ldflags = [ "-ld", "//build/config/compiler:default_ld" ]
}

在上述配置中,将"/path/to/clang"替换为实际的clang工具链路径。

  1. 生成构建文件:在项目的根目录下打开终端,运行以下命令生成构建文件:
代码语言:txt
复制
gn gen out/Release

这将在项目的根目录下创建一个名为out/Release的目录,并生成构建文件。

  1. 构建项目:运行以下命令来执行构建:
代码语言:txt
复制
ninja -C out/Release

这将使用配置的clang工具链来编译和构建项目。

通过以上步骤,你可以配置GN/Ninja来使用不同的clang工具链。请注意,这只是一个示例配置,实际的配置可能因项目而异。在实际配置中,你可能还需要配置其他构建参数和依赖项。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云物联网平台(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云移动开发(移动推送、移动分析等):https://cloud.tencent.com/product/mobile
  • 腾讯云音视频服务(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云安全产品(WAF、DDoS 防护等):https://cloud.tencent.com/product/safety
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

方舟编译器构建(笔记)

方舟编译器构建体系(逐层向下) 多个工具层次化配置构建体系 - 编译速度快 - 能更加快速地适应多种软硬件平台 - 需要开发者熟悉更多构建工具 1....构建流程 : Makefile 作为最上层构建工具,暴露给编译源码使用者,并且它会调用 gn; gnNinja构建准备相关配置文件; 最终通过 Ninja 完成构建工作。 2....构建工具介绍: 1. Makefile 业界使用已久构建工具。 2. gn gn 是 Chromium 项目开发一种元构建系统,用来替代 GPY。...和 GPY 相比,它速度更快,能更好地解决依赖问题,能更好地支持调试。 gn 这个构建系统,只生成 Ninja 构建文件,并不进行编译。 3....环境配置 1. Ubuntu 环境 默认为 Ubuntu 16.04 2. Clang 工具 3. gnNinja 修改 gnNinja 权限 2. 源码编译 1.

39510

AIoT应用创新大赛--我项目我做主,使用GN+Ninja来完成构建系统(VSCode开发)

而本次比赛中,如果不考虑使用官方IDE的话,又不想用makefile(主要是不会写),所以还是尝试着GN+Ninja完成了rt1062构建系统。...} --args="product = \"${BOARD}\"" 命令解析:若修改了构建脚本(如BUILD.gn文件),应先执行gn gen命令生成ninja构建文件,ninja才知道构建内容有变化了...out/${BOARD} 为指定生成编译构建配置目录, --args="product = \"${BOARD}\""为传递给gn参数,告诉gn为product名称是${BOARD}环境变量配置相关参数...,比官方工具快多了);gdesc命令,用于获取编译配置相关依赖树,编译参数等内容;gformat命令,用于格式化gn配置文件。...└── toolchain ├── BUILD.gn #工具配置 ├── clang.gni #预留给clang配置文件

1.5K10

WebRTC中编译工具 gyp 、gnninja

如在 Mac 下产生 XCode 工程文件,在Windows下生成 VS 工程文件,以及 Ninja 文件。 什么是 gn GN(Generate Ninja),它是 GYP 替代工具。...由于GNC++编写,比起用 python写 GYP 快了很多。 什么是 cmake 相对于 gyp 和 gn, 大家可能对 cmake 更熟悉点。...什么是 ninja ninja,它与 make 类似,也是一种编译控制工具,它可以根据用户需求进行编译。...小结 从上面的介绍大家可以了解到, cmake/scons/gyp/gn 这几个工具是同一类,可以产生跨平台工程文件,以及编译控制文件(如 makefile 或 .ninja 文件);而 make.../ninja 是同一类工具,用于根据用户要求对源文件进行编译,可以将它们称为编译控制工具;而具体编译工具是指 gcc/ clang/ msvs等工具了。

2.5K21

xmake v2.3.4 发布, 更加完善工具支持

$ xmake f -p windows --toolchain=clang 内置工具 虽然xmake交叉编译配置支持所有工具,也提供一定程度智能分析和工具探测,但通用方案多少对特定工具支持需要追加各种额外配置...而新版本xmake内置了一些常用工具,可以省去交叉编译工具复杂配置过程,只需要传递工具名到--toolchain=xxx即可。...关于这块详情介绍,可以到自定义工具章节查看 更多详情见:#780 针对特定target设置工具 除了自定义工具,我们也可以对某个特定target单独切换设置不同工具,和set_toolset...不同是,此接口是对完整工具整体切换,比如cc/ld/sh等一系列工具集。...除了进度展示不同外,其他都跟默认主题配置相同。 $ xmake g --theme=ninja ?

1.4K20

解决 Flutter 引起 iOS 内存崩溃问题

在阅读了无数官方 / 民间文档之后,花了三天时间,硬是整出来了,在 Flutter Engine 中加上了自定义打印: 具体方案二是如何解决问题,下文细说。...- 源码管理工具,可以帮助你拉取项目源码以及依赖 gn - 创建编译材料,特别适合 Flutter 这种跨平台多编译目标的项目 ninja - 编译工具,负责编译 gn 生成编译材料 开始安装 depot_tools... $ gclient sync --with_branch_heads --with_tags 编译 接着就是编译,我们会分两个步骤: gn 创建编译材料 ninja...执行编译 想简单了解一下 gnninja 看这里[8],想详细了解 gn 看这里,想详细了解 ninja 看这里[9] 值得一提是,由于 Flutter 编译产物是分平台,我们目前主要需要是...是 Dart 编译产物,要确保它放在正确文件夹,并且被正确调用 巧用调试打印大法,需要修改 .gn .py 文件都可以 print 打印参数,如果不熟悉可以快速预览一下 gn[11] 和 Python

1.4K10

CMake简易指南

目标编译系统cmake 与Google GN类似,属于meta-build(源编译)系统,有自己交互语法,使用时需要先将自身语法翻译成其他编译系统,这个翻译过程称之为configure(配置),在执行配置命令时可以通过...:用于指定交叉编译工具,一般用于非本地平台编译,如 Android,ARM 平台编译等-DKey=Value:用于配置CMakeLists.txt或者工具option选项等cmake 执行配置时从指定路径下...cmake 中,除了常规命令行,如if(xxx),还支持一种特殊语法 生成器表达式,生成器表达式与常规命令不同,常规命令在 配置 阶段生效,而生成器表达式在 编译 阶段才针对生成器进行计算评估。...,遇到交叉编译时通常选择交叉编译工具,部分 SDK 已经提供 cmake 工具,如:Android NDK、TDA4等,未提供工具 SDK,可以通过指定编译器路径等信息来编译,也可以基于 SDK...交叉编译除了可是使用工具,也可以在配置阶段通过参数指定编译器等信息实现交叉编译;工具除了可以用于交叉编译,也可用于编译系统扩展,如:vcpkg 中可用于查找内置三方库工具文件扩展工具微软开源项目中工具文件

69450

GN学习记录

GNninja构建文件元构建工具,能够构建出ninja.ninja文件,比起ninja原本构建命令GN能够比较好地进行依赖管理,并且能够很方便输出构建图谱。...ninja files [101/323] CXX obj/base/icu_utf.o ... > gn clean out/Default 输出构建目录后,在后续ninja编译时会自动重新生成构建文件...最简单例子 BUILD.gn static_library(“base”) { sources = [ “a.cc”, “b.cc”, ] } 该配置在构建时会生成ninja...configs += [ “:myconfig” ] } 不同target可以使用相同配置 配置共享 config(“icu_dirs”) { include_dirs = [ “include”...如果不同构建模块有依赖关系,只能通过Build.gn标签来指定.每个模块构建时候都会加载BUILDCONFIG默认配置

3K41

聊一聊鸿蒙构建系统

接着 chromium 项目又整出了一个 Ninja 构建系统,但这个 Ninja 并不是用来取代 GYP,而是取代 GNU make ,据谷歌官方说法是速度有了好几倍提升。...对于开发者而言,不需要去深入了解 Ninja 或 GNU Makefile 这样构建系统,因为它只是一种中间输出。 再后来,谷歌又对 GYP 动刀,取而代之GN 构建系统。...GN 构建系统仍然是一个元构建系统(meta-build system),用来快速生成 Ninja 构建文件。 GN 构建系统源码位于:https://gn.googlesource.com/gn。...如果只是它来构建软件,可以下载 depot_tools,里面包含了 GNNinja 等整套构建工具。...速度更快,谷歌官方给数据是 20 倍速度提升。 修改 GN 文件后,执行 ninja 构建时会自动更新 Ninja 构建文件。

1.4K20

Rust 改写了自己C++项目:这两个语言都很折磨人!

使用 PGO 自定义工具 我发现 C++ 编译器构建如果配置文件引导优化(PGO,也称作 FDO),会有明显性能提升。...因此,让我们试试用 PGO 优化 Rust 工具同时,也 LLVM BOLT 加上 -Ctarget-cpu=native 进一步优化 rustc。 Rust 工具:自定义工具是最快。...我自定义构建 Clang(和 Rust 工具一样,也是 PGO 和 BOLT 构建)相较于 Ubuntu Clang,显著优化了构建时间,而 libstdc++ 构建略快于平均 libc+...那我自定义 Clang 加上 libstdc++ 在 C++ 和 Rust 对比中表现如何呢? macOS:Xcode 是最快工具。...(数据越小越好) 在 macOS 上,搭配 Xcode Clang 工具似乎要比 LLVM 网站上 Clang 工具优化得更好。

1.1K20

xmake v2.3.1 发布, 无缝对接其他构建系统

新特性介绍 生成build.ninja构建文件 xmake现已支持对ninja构建文件生成,让用户可以使用ninja来快速构建xmake维护项目。...主要有以下好处: 完全行为一致,简化编译流程,不管用了哪个其他构建系统,都只需要执行xmake这个命令就可以编译,用户不再需要去研究其他工具不同编译流程 完全对接xmake config配置环境...实现快速交叉编译 众所周知,autotools维护项目虽然很多都支持交叉编译,但是交叉编译配置过程很复杂,不同工具处理方式还有很多差异,中途会踩到很多坑。...即使跑通了一个工具交叉编译,如果切到另外一个工具链环境,可能又要折腾好久,而如果使用xmake,通常只需要两条简单命令即可: !...,还支持autotools项目的交叉编译 启用gcc/clang编译错误色彩高亮输出 #588: 改进工程生成插件xmake project -k ninja,增加对build.ninja生成支持 改进

85630

Flutter引擎——下载、编译和调试

3,配置工具环境变量 vim ~/.bash_profile 4,安装最后一个工具ant brew install ant 5,下载引擎 (1) 在对应位置下(我是在Flutter目录下)新建目录...--with_tags --verbose 三、Flutter引擎源代码编译 Flutter 引擎源代码是需要通过Ninja来编译,而GN是一个生成Ninja编译所需构建文件元构建系统。...需要注意是,由于一些配置问题,不同设备在编译时候可能会遇到不同问题,当遇到问题时候就去解决问题好了。...接下来我就稍微修改下本地引擎代码,看看能不能其作用,如下,我在本地引擎代码中增加了一个NSLog: 需要注意哦,此时还不可以生效奥~ 接下来使ninja来编译本地Flutter引擎代码: 然后再使用...第二步,通过GN来构建编译Flutter引擎所需文件。构建结果就是,在out文件夹下面生成了四个Xcode工程文件夹。 第三步,通过ninja编译上面第二步构建出来4个Xcode工程。

2K41

披着CLion外衣实则在讲CMake

工具配置 这个配置是进行 C++ 开发关键,因为这个编译工具就意味着 C++ 编译环境。...如下图所示我编译工具稍微有点丰富,有 msvc、g++、clang++、mingw,作为一个刚刚入门学编程新手,我建议编译工具这一块暂时就没必要了解了,但在 CLion 中编译具体配置流程我认为还是有必要讲清楚...接下来简单介绍如何添加一些工具: 安装 msvc 编译工具:直接到官网下载 VS2022,然后安装对应 C++ 环境,打开 CLion 后添加 msvc 环境时就会自动识别。...Generator:这是前面所说工具较为底层脚本运行工具,可以是 makefile 或者 ninja,不选的话也是默认工具那个。...我们先看一眼上一步 cmake 生成文件(放出了两个不同配置项产生脚本,第一个使用 Generator 为 ninja,第二个使用为 gmake): 如果想要继续执行这个脚本

4.3K30

鸿蒙系统研究之三:迈出平台移植第一步

在本文你将了解到: 如何为 OpenHarmony OS 2.0 标准系统增加新产品定义; 如何将新平台移植加入构建系统; 为模拟器编译出 Linux 内核; 常用模拟器软件有 QEMU,能够模拟多种硬件型号...为 Vexpress A9 编译内核 关于嵌入式 Linux 内核编译,网上资料很多,这里探讨如何在鸿蒙系统构建系统中加入内核编译步骤。...KERNEL_CROSS_COMPILE) modules .PHONY: build-kernel build-kernel: $(KERNEL_IMAGE_FILE) 在该 Makefile 中,指定交叉编译工具...让我们来使用构建脚本编译系统: ....小结 鸿蒙系统构建系统还是比较复杂,交织着 bash 脚本、python 脚本、GN 构建系统、make 构建系统、JSON 文件等等,有些文件还是编译过程生成出来,理解起来相当困难。

1.8K50

CEF -version 3325完整编译教程

(编译不同版本要求不一样,具体看Cef官网帮助,我是VS2017),需要安装“C++桌面组件” 和 “MFC和ATL支持”,最好安装在默认路径,VS2017还需要特殊配置  4.Win10 SDK(..._sandbox\obj\cef\libcef.ninja e:\cef3325\source\chromium\src\cef> gn生成cef.sln和gyp有所区别, gyp是直接在source...\chromium\src\cef\目录下生成一个统一sln,vc 而gn它是在source\chromium\src\out\分目录下,每个目录一个,如Debug_GN_x86,同时会把很多系统依赖..._sandbox\args.gn contents: clang_use_chrome_plugins=false enable_basic_printing=true enable_nacl=false...Creating tar.bz2 archive for cef_binary_minimal... e:\cef3325> 这样打包会有点问题,就是生成名字和官网提供二进制名称不同,最好还是在build.bat

18.7K344

鸿蒙源码构建工具GnNinja 介绍及使用入门

简单来说Gn有点儿类似于cmake或automake之类辅助生成makefile脚本东东,相当于构建脚本命令。Ninja相当于构建指令,功能类似于make命令。...解释可能不太准确但是这样可能容易理解些。 专业介绍: 什么是Ninja? Ninja 是借由 Google Chrome 项目而诞生一个构建工具,它诞生目标是为了速度。...官方介绍:https://ninja-build.org/ 类似同类型构建界老大哥老古董make ,make 即 GNU Make,一个用于决定如何使用命令完成最终目标构建程序。...make 需要借助其它工具(如:gcc)才能执行方案,最终完成工作。 Ninja 可以看作是一个更好更快 make 。 什么是GN?...GN是一个生成Ninja构建文件元构建系统,以便你可以Ninja构建你项目。

1.5K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券