问题标签 [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.
build - 忍者与 msbuild 的真实世界表现?
我正在考虑将庞大的 C++ 和 C# 代码库从 msbuild 移植到 cmake/ninja,这是基于 ninja 在构建本机代码方面比 msbuild 具有更好的并行性的承诺。有没有人有这样做的实际经验?我想知道移植成本是否真的值得。理想情况下是在构建时间之前和之后:)
另外,那个忍者怎么可能比 msbuild 快得多?我认为即使 B 需要链接 A 的输出,它也必须并行构建项目 A 和 B 的对象文件?
build - 清洁构建铬
我根据说明在 WIN 上编译 chromium ( https://www.chromium.org/developers/how-tos/build-instructions-windows )
输出(“out/Release”)得到一个非常大的文件夹(20gb)ninja -t clean
文件夹大小减小到8gb后
是否有可能只获得二进制文件?或者需要手动选择,如果需要,铬需要哪些文件?
ios - 为 iOS 构建 webrtc 库时出错
我一直在尝试按照 Google 在http://www.webrtc.org/native-code/ios(和相关链接)上的指示为 iOS 构建 webrtc。虽然我记得过去通过类似的步骤我已经能够构建它,但情况已不再如此。
这是我做的步骤:
下载先决条件:
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=`pwd`/depot_tools:"$PATH"
下载回购:
$ 出口 GYP_DEFINES="OS=ios"
$ 获取 webrtc_ios
准备构建:
$ 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 运行钩子
建造:
$ ninja -C out_ios/Debug-iphoneos AppRTCDemo
一切都很好,直到最后一个命令失败并显示/bin/sh:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc:没有这样的文件或目录:
出于某种原因,忍者认为我们正在为模拟器构建,而且即使我们这样做也不是获得 gcc 的正确途径。请注意,我的系统安装了 XCode 7。
任何想法可能有什么问题或我该如何解决这个问题?
最好的问候, 安东尼斯
cmake - 除了翻译单元编译失败外,还报告目标失败
假设我有数百个目标,其中一些对于构建成功并不重要(例如,我--keep-going
在 make 或-k 9000
ninja 上使用),我需要找出哪些 cmake 目标失败。
可以将add_custom_command()
构建后命令添加到 cmake 目标,该目标打印其名称,如下所示:
但是失败呢?
如果链接失败,那么我可以解析我正在使用的任何内容(ninja/make/msbuild)的详细输出,并查看哪个目标失败了。
但是,如果翻译单元的编译失败,我得到的唯一错误是特定源文件无法编译,并且确定哪个 cmake 目标完全失败更难。
我唯一想到的是在构建失败后运行它:ninja -nv
这将进行详细的空运行,我可以拦截链接命令并解析以这种方式失败的 cmake 目标......
还有其他想法吗?
build-process - 避免重建未更改输出的依赖关系
当我在 ninja 中有一个包含多个输出的规则时,它假定所有输出都已更新,并且它们的所有依赖项都被重建,即使它们根本没有改变。
这通常会出现代码生成步骤,例如解析器生成器。
例如对于 LEMON 解析器生成器:
如果在运行 LEMON 后grammar.y
得到更新但grammar.h
没有改变。LEMON 检测到这一点并且不更新文件。尽管如此,忍者重建了所有依赖的东西grammar.h
。
我该如何防止这种情况?
cmake - CMake OBJECT 库 + MinGW 未链接
我正在使用 CMake 和 ninja 构建我的静态库。静态库从几个CMake OBJECT 库构建。
我正在使用 qmake 和 MinGW(4.92、32 位)构建可执行文件。
问题是,导致静态库未与可执行文件链接。对象库中的所有函数都是未定义的引用。
如果不使用忍者,这个问题不会重现。
google-chrome - 忍者:无事可做
我正在尝试用 Ninja 构建 nwjs。我之前构建了几次代码,但是,这个问题我无法解决。
我收到以下忍者消息:
有什么建议么?
应该有工作要做。我还没有构建代码。
windows - 忍者批处理文件作为命令
我想像这样在忍者中使用批处理文件作为规则命令
但它导致
当我在命令前加上前缀时它可以工作cmd /c
,但是我遇到了命令行长度上限为 8191 个左右字符的问题。我发现很难找到有关为什么这不起作用的信息。我的猜测是 windows 真的只能执行.exe
带有CreateProcess()
.
当它直接传递给它时我可以让它工作CreateProcess()
还是我必须使用它cmd /c
?
cmake - 在 Raspberry Pi 上进行 yotta 构建时出现 CMake 错误
运行“yotta build”命令时出现以下错误。我正在尝试在 Raspberry Pi 上安装 mbed 客户端。我正在关注本教程mbed 客户端 linux 示例
错误:
cmake - cmake 响应文件 Unix Makefile 生成器与 ninja 生成器
CMake 3.4.1 正在使用响应文件来缩短与 ninja 而不是 unix makefile 链接的命令行长度。我正在使用 IAR 嵌入式工具链进行交叉编译,它不支持给定的响应文件语法(即@CMakeFiles/proj.rsp)。我更喜欢使用 ninja 构建系统,因为它更快,但我需要一个解决此响应文件的方法。我需要禁用响应文件生成或让它使用我的工具链支持的语法(即 -f 文件名)。有没有办法做到这两点?