问题标签 [ninja]

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 回答
2750 浏览

build - 忍者与 msbuild 的真实世界表现?

我正在考虑将庞大的 C++ 和 C# 代码库从 msbuild 移植到 cmake/ninja,这是基于 ninja 在构建本机代码方面比 msbuild 具有更好的并行性的承诺。有没有人有这样做的实际经验?我想知道移植成本是否真的值得。理想情况下是在构建时间之前和之后:)

另外,那个忍者怎么可能比 msbuild 快得多?我认为即使 B 需要链接 A 的输出,它也必须并行构建项目 A 和 B 的对象文件?

0 投票
1 回答
3069 浏览

build - 清洁构建铬

我根据说明在 WIN 上编译 chromium ( https://www.chromium.org/developers/how-tos/build-instructions-windows )

输出(“out/Release”)得到一个非常大的文件夹(20gb)ninja -t clean文件夹大小减小到8gb后

是否有可能只获得二进制文件?或者需要手动选择,如果需要,铬需要哪些文件?

0 投票
1 回答
2167 浏览

ios - 为 iOS 构建 webrtc 库时出错

我一直在尝试按照 Google 在http://www.webrtc.org/native-code/ios(和相关链接)上的指示为 iOS 构建 webrtc。虽然我记得过去通过类似的步骤我已经能够构建它,但情况已不再如此。

这是我做的步骤:

  1. 下载先决条件:

    $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

    $ export PATH=`pwd`/depot_tools:"$PATH"

  2. 下载回购:

    $ 出口 GYP_DEFINES="OS=ios"

    $ 获取 webrtc_ios

  3. 准备构建:

    $ cd webrtc/src

    $ export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1"

    $ export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=armv7"

    $ 出口 GYP_GENERATOR_FLAGS="output_dir=out_ios"

    $ 出口 GYP_CROSSCOMPILE=1

    $ gclient 运行钩子

  4. 建造:

    $ ninja -C out_ios/Debug-iphoneos AppRTCDemo

一切都很好,直到最后一个命令失败并显示/bin/sh:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc:没有这样的文件或目录:

出于某种原因,忍者认为我们正在为模拟器构建,而且即使我们这样做也不是获得 gcc 的正确途径。请注意,我的系统安装了 XCode 7。

任何想法可能有什么问题或我该如何解决这个问题?

最好的问候, 安东尼斯

0 投票
1 回答
49 浏览

cmake - 除了翻译单元编译失败外,还报告目标失败

假设我有数百个目标,其中一些对于构建成功并不重要(例如,我--keep-going在 make 或-k 9000ninja 上使用),我需要找出哪些 cmake 目标失败。

可以将add_custom_command()构建后命令添加到 cmake 目标,该目标打印其名称,如下所示:

但是失败呢?

如果链接失败,那么我可以解析我正在使用的任何内容(ninja/make/msbuild)的详细输出,并查看哪个目标失败了。

但是,如果翻译单元的编译失败,我得到的唯一错误是特定源文件无法编译,并且确定哪个 cmake 目标完全失败更难。

我唯一想到的是在构建失败后运行它:ninja -nv这将进行详细的空运行,我可以拦截链接命令并解析以这种方式失败的 cmake 目标......

还有其他想法吗?

0 投票
1 回答
89 浏览

build-process - 避免重建未更改输出的依赖关系

当我在 ninja 中有一个包含多个输出的规则时,它假定所有输出都已更新,并且它们的所有依赖项都被重建,即使它们根本没有改变。

这通常会出现代码生成步骤,例如解析器生成器。

例如对于 LEMON 解析器生成器:

如果在运行 LEMON 后grammar.y得到更新但grammar.h没有改变。LEMON 检测到这一点并且不更新文件。尽管如此,忍者重建了所有依赖的东西grammar.h

我该如何防止这种情况?

0 投票
1 回答
60 浏览

cmake - CMake OBJECT 库 + MinGW 未链接

我正在使用 CMake 和 ninja 构建我的静态库。静态库从几个CMake OBJECT 库构建。

我正在使用 qmake 和 MinGW(4.92、32 位)构建可执行文件。

问题是,导致静态库未与可执行文件链接。对象库中的所有函数都是未定义的引用。

如果不使用忍者,这个问题不会重现。

0 投票
0 回答
3558 浏览

google-chrome - 忍者:无事可做

我正在尝试用 Ninja 构建 nwjs。我之前构建了几次代码,但是,这个问题我无法解决。

我收到以下忍者消息:

有什么建议么?

应该有工作要做。我还没有构建代码。

0 投票
0 回答
381 浏览

windows - 忍者批处理文件作为命令

我想像这样在忍者中使用批处理文件作为规则命令

但它导致

当我在命令前加上前缀时它可以工作cmd /c,但是我遇到了命令行长度上限为 8191 个左右字符的问题。我发现很难找到有关为什么这不起作用的信息。我的猜测是 windows 真的只能执行.exe带有CreateProcess().

当它直接传递给它时我可以让它工作CreateProcess()还是我必须使用它cmd /c

0 投票
0 回答
473 浏览

cmake - 在 Raspberry Pi 上进行 yotta 构建时出现 CMake 错误

运行“yotta build”命令时出现以下错误。我正在尝试在 Raspberry Pi 上安装 mbed 客户端。我正在关注本教程mbed 客户端 linux 示例

错误:

0 投票
1 回答
1435 浏览

cmake - cmake 响应文件 Unix Makefile 生成器与 ninja 生成器

CMake 3.4.1 正在使用响应文件来缩短与 ninja 而不是 unix makefile 链接的命令行长度。我正在使用 IAR 嵌入式工具链进行交叉编译,它不支持给定的响应文件语法(即@CMakeFiles/proj.rsp)。我更喜欢使用 ninja 构建系统,因为它更快,但我需要一个解决此响应文件的方法。我需要禁用响应文件生成或让它使用我的工具链支持的语法(即 -f 文件名)。有没有办法做到这两点?