问题标签 [gn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
72 浏览

c++ - 如何调用 clang 以使用当前操作系统 GLIBC?

我正在构建一个应用程序,该应用程序使用 GN 和 ninja 来构建文件。该应用程序目前正在 Ubuntu 20.04 上构建,我正在使用 clang 编译文件。但问题是当我尝试在 Ubuntu 18.04 中构建和执行可执行文件时,它给了我这个错误:-

因此,这基本上意味着 clang 无法根据当前操作系统构建文件。我需要使用任何标志来使其与当前操作系统一起使用吗?或者还有其他方法可以解决这个问题吗?

0 投票
1 回答
86 浏览

build - 了解 Fuchsia OS 中的 GN 构建系统,什么是`build_api_module`?

GN 代表生成忍者。它生成构建东西的忍者文件。主文件是BUILD.GN,位于 fuchsia 源代码树的根目录

它包含很多build_api_module调用:

但是,我不清楚这到底是做什么的。例如,查看它在build/config/build_api_module.gn上的定义:

看起来它只是生成一个文件。

有人可以向我解释最终如何build_api_module("images") 构建所有锆石内核映像吗?

0 投票
0 回答
43 浏览

chromium - 在 Windows 上构建 Chromium 会引发错误消息

获取 Chromium 的源代码后,我执行了以下命令

这会导致执行错误:

/c/src/depot_tools/gn: 第 8 行: exec: python3: 未找到

有什么问题以及如何解决此错误?

0 投票
1 回答
46 浏览

gn - 如何使共享库不链接到其在 gn 中的部门

我使用 gn 作为 make 系统,并且我有一个共享 libS,它依赖于 libA 和 libB,但我希望 libA 中的函数不链接到 libS(它将链接到 main),而函数 libB 链接到 libS。

我的问题是:

  1. 如果我对 libA 使用 deps 或 public deps,将添加包含路径(这是我想要的),但所有功能也将被链接(这不是我想要的)
  2. 如果我使用data_deps,函数将不会被链接(我想要),但也不会添加包含路径(不是我想要的)
0 投票
0 回答
44 浏览

build - 如何在 Chromium 中构建特定文件

在编辑 Chromium 问题的一些错误后,我正在尝试构建我的特定文件。但是当我执行

找出我的错误太慢了。我认为有更快的方法来构建自动忍者来上传我解决的问题。例如autoninja -C out\Default {directory} 但它不起作用。有什么方法可以更快地构建它吗?只有特定的文件?

0 投票
1 回答
222 浏览

gn - 使用修改后的编译器标志编译基于 GN 的项目

V8 使用的构建系统并不简单。假设我希望添加-save-temps到构建标志以保留编译期间生成的所有中间文件。我将在哪里指定此信息?您是否在特定命令中指定它?是否必须将其添加到特殊的构建配置文件中?

0 投票
0 回答
66 浏览

c++ - 更改 Chromium 品牌 (MacOS)

我设法将 chromium 的品牌更改为 windows,如下所示:Chromium - mini_installer ignores branding。它奏效了!

但是当我在 Mac 上构建一个项目时,程序停止工作。请告诉我需要做什么才能使铬正常工作。

当我将PRODUCT_FULLNAME位于的位置更改// chrome / app / theme / chromium / BRANDING为它自己的值时,程序崩溃了。

启动chromium时出现的错误:

PS感谢@Asesh的帮助!)答案是:

“icudtl.dat not found in bundle”在 Mac 上启动自定义品牌 Chromium 构建时?

0 投票
0 回答
132 浏览

c++ - 在 Google Chromium 源代码中添加包含时如何配置 GN Ninja 文件?

我正在为旧版 Google Chrome (71.0.3578.141) 开发新功能。

在文件 src/content/browser/devtools/protocol/page_handler.cc 中,我需要添加以下内容:

src/content/browser/devtools/protocol/page_handler.cc:

当我执行gn check out/Default时,输出为:

抱歉,我是新手,不知道 GN (Ninja) 工具是如何工作的。我认为我必须修改一些 BUILD.gn 文件(或任何其他 GN 配置文件),但我不知道从哪里开始。请问,谁能帮帮我?提前致谢!

0 投票
0 回答
42 浏览

webrtc - 在 Windows 上的多线程 DLL 中构建 WebRTC

关于 Windows 上的 WebRTC 编译(GN/Ninja)的直接问题:GN 中是否有特定的配置告诉 ninja 将 WebRTC 构建到 MSVC 应用程序可以使用的 DLL 中?目前我只是静态地构建它们,但这并不好,因为我使用的遗留应用程序应该只在动态链接中使用 WebRTC。查看 WebRTC 构建列表(在 gn 中)似乎没有这样的配置。这种说法正确吗?如果没有,将使用什么选项?

0 投票
0 回答
80 浏览

webassembly - 在 build.gn 中设置 Emscripten WASM 预加载

我有一个使用 BUILD.gn 和 ninja 的 Emscripten WASM 项目。

我希望能够在模块 gn 文件本身中指定由 emscripten 编译为 WASM 的 C++ 代码使用的“安装”资源。

然后,我希望能够获得这些资源,而不必在可执行文件中重复自己,收集它们并将它们“--preload”提供到 emscripten 文件系统中。

大多数文件只是静态数据(配置文件等),少量是由构建步骤生成的。

我尝试过或考虑过的事情:

  1. 使用元数据和元数据集合。这可以为我提供一整套信息,但不是在构建期间使用该信息集的方法。在构建期间无法依赖资源的生成。我可以根据收集的元数据尝试第二个构建步骤吗?

  2. 走部门并收集清单。我不知道如何关闭我所依赖的部门。我想我可以将 dep 名称映射到文件目标,然后自己重​​新收集并收集它们?

  3. 制作一个单独的工具链来构建预加载的数据文件,并让我的可执行 wasm 构建依赖于我的预加载可执行目标作为数据依赖项。js wasm 模板假定 .data 文件在那里,因为它只在运行时需要。我缺乏编写完整的仅预加载工具链的技能,或者不知道这样做是否有意义。

  4. 只需将资源文件放在硬编码位置即可。这确实不能很好地扩展。

我发现 Bazel 文档似乎直接针对这个问题(比如递归依赖关系以查找所有 .foo 文件并将它们传递给编译器),但我不知道如何将其转换为 GN。

任何人都知道如何做到这一点?这感觉像是一个非常基本的“一键构建”要求,但我的 GN 一点也不流利。