问题标签 [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 投票
1 回答
761 浏览

webrtc - webRTC编译windows 7 64位

我正在尝试编译 webRTC 代码,但出现以下错误。我没有尝试使用 Visual Studio。

得到的错误是<PATH>/src/buildtools/win/gn.exe由于 64 位 windows 版本不兼容而无法启动。令人困惑的是我在 Windows 7 64 位上编译。至少可以说,这个错误令人困惑。

遵循的步骤是: -

从铬网页解压缩depot_tools并设置正确的路径。

然后下载 webRTC 和编译的步骤是

gn gen out/Default<问题出现在这里>

0 投票
0 回答
617 浏览

c++ - 无法使用 ninja for windows 机器为 webrtc 构建 *.dll

我需要 dll 文件作为 Windows 机器的输出。默认 GN 配置仅创建 lib 文件。所以我将 webrtc.gni 中的 target_type 从 static_library 更改为 loadable_module,但 Ninja 无法构建它。这是错误快照

谢谢,沙希

0 投票
1 回答
1488 浏览

macos - Chromium:GN / Ninja - 通过 Build.gn 链接到 OS X 框架失败

TL:DR - 在 Build.gn 文件中正确的调用是什么,以将 Chromium 正确链接到第三方 Mac OS X 框架(并另外将其包含在 Contents/Frameworks/app 捆绑路径中)?

请参阅下面的 Build.gn 和路径设置。


我正在通过第三方库添加对视频捕获的支持来自定义 Chrome 浏览器。我修改了现有的 Build.gn 文件以找到我的第三方部门并编译我的新源。我修改了现有的 Chromium Build.gn 以包含我的新依赖项:

媒体/捕获/视频/mac/DEPS:

]

它正确地为我的框架 Syphon 找到了我的新 Build.gn:

我的 Build.gn 如下:

编译有效,但如果我尝试使用我所包含的框架中的对象,则构建失败。我已经习惯了 OS X / Xcode 上的这些链接错误,但是对于 Ninja/GN,我不清楚解决它们的正确方法。

忍者的输出:

注意 - 生成的链接器参数有一个链接器标志,可以正确使用 -L /path/to/third_party/Syphon/mac/ 保存 Syphon.framework,但是,-framework 命令找不到 Syphon。

我尝试使用不同的 Build.gn 命令(如 ldflags),但都会导致相同的问题。

谢谢你。

0 投票
0 回答
965 浏览

cmake - CMake、第三方、Ninja 和清洁

我正在尝试用 CMake 替换我公司中的(慢速)构建工具。

我们当前的构建工具有一个很好的功能,它可以从一些子存储库中提取标签,然后使用它来下载(使用类似于 rpm 的包管理器,只处理开发包)匹配版本号的第三方。

另一个问题是存储库管理器会将软件包安装到多个用户使用的共享目录中:在执行“make clean”或“ninja clean”时,不得删除安装在该共享目录中的文件。

我一直在尝试用 CMake 复制这种行为。到目前为止,我可以使用 Make 完成这项工作,但不能使用 Ninja。

尝试#1:

rpm_install.cmake 是:

这很好用:如果文件不存在,它就会被安装。问题:“make clean”删除已安装的文件。

解决方案是使用 CLEAN_NO_CUSTOM 标记目录。这适用于 make,但不适用于 Ninja。

尝试#2:

由于 Make 和 Ninja 清理了这些文件,因为它们被声明为 OUTPUT,所以我们不要将它们声明为 OUTPUT:

这是尝试#1的轻微变化。它适用于 Make,但不适用于 Ninja,因为 Ninja 一开始就知道没有规则能够创建库!

尝试#3:使用 ExternalProject_Add

问题是“make clean”和“ninja clean”仍然清理图书馆......

我想我可以通过添加一个配置步骤来使尝试#2 与 Ninja 一起工作,以便在创建时下载丢失的库。

问题是它将“静态”工作,而不是“动态”工作:如果子存储库中的更新指示库的更新版本,则检查步骤将失败,因为 someLib.a 尚不存在。(在 的命名中有一些版本信息someLib.a。)

我想我可以像这样放置一些更复杂的东西(我还没有尝试过):

这个想法是创建一个到真实图书馆的链接。链接可以删除没有问题。如果它不存在,那么它会触发下载并创建链接。

但是有没有更简单的解决方案?

更新 1:

我已将所有这些尝试替换为:

以便在配置时安装依赖项。

这适用于版本号硬编码到 CMakeLists.txt 中的依赖项。

这也解决了“make clean”和“ninja clean”的问题,因为没有库/可执行文件是目标的输出。这很简单。

我现在正在尝试寻找“动态”版本号的解决方案。(在构建时从 Git 中提取的那个。)

我的计划是添加一个触发外部 CMake 脚本的 custom_target,该脚本将提取 Git 版本信息,然后更新将包含在 CMakeLists.txt 中的 .cmake 文件。我希望这会重新触发 CMake,一切都会好起来的。你认为这可能奏效吗?

更新 2:

这不起作用,尽管我能够做上面描述的事情。这不会触发rebuild_cache。

对于那些感兴趣的人,我做了这样的事情:

并且 extract_version.cmake 是:

那时,我不知道如何使用 CMake 解决我的用例。也许这是不可能的。

0 投票
2 回答
218 浏览

git - 有效地使用带有 make/ninja 类工具的 git checkout

当我使用我的 git-repos(在 C/C++ 中)时,我会定期切换分支,有时想构建一个特定的分支或标签(使用 make)。当我切换回当前主要关注的分支时,运行 make 将导致构建时间非常长。就构建系统(例如 make)而言,是否有某种方法可以配置 git,或者使用一些 git-checkout 特定参数来恢复存储库的状态?构建系统忍者在这方面做得更好吗?

如果没有办法做到这一点,那为什么呢?如果有办法做到这一点,为什么默认不实现呢?

0 投票
0 回答
209 浏览

android - 函数调用的参数太多 - 忍者错误

尝试编译 LineageOS 时一直卡在这个错误有谁知道这是什么/如何解决这个问题

这是我用来做这个的 github:LineageOS Merged Sumire(Lineage) files with Suzuran

0 投票
1 回答
754 浏览

cmake - MSVC 与 CMake 和 Ninja 生成器的增量链接

我在 Windows 上使用 CMake 和 Ninja 生成器构建了一个共享库。我想使用增量链接来减少链接所需的时间。

我试图设置CMAKE_SHARED_LINKER_FLAGS为,"/incremental"但这个标志总是被"/INCREMENTAL:NO"CMake 附加的 a 覆盖。

我也尝试设置MSVC_INCREMENTAL_DEFAULTON,但这没有任何效果。

那么如何使用 CMake 和 Ninja 生成器进行增量链接呢?

0 投票
2 回答
854 浏览

batch-file - 使用 CMake 批量评估 ninja clang-tidy 的返回值

我正在使用 CMake 3.6 生成 ninja 1.6.0 配置,使用 clang-tidy(LLVM 版本 3.9.1)编译和静态分析我的代码:

.clang-tidy 文件:

构建.bat:

我得到的输出是:

96 warnings treated as errors ninja: build stopped: subcommand failed.

%errorlevel%0,虽然 ninja 明确表示子命令失败。这个变量很重要,因为它由构建服务器评估并将构建标记为失败。

我该怎么做才能%errorlevel%正确设置为!= 0?

0 投票
0 回答
758 浏览

android - 从源构建 Android 7:export_includes 和 import_includes 相关错误

我在尝试构建 Android 7 时遇到了以下错误(来自 codeaurora.org 的QAEP):

我做了一个快速find*qct**audioresampler*。第一个仅返回来自供应商 wlan 驱动程序的几个源文件,但没有库(例如libqct目录)。第二个什么也没返回。

这个错误是什么意思?是否有缺失的模块被引用但未包含在manifest?

任何帮助表示赞赏。

0 投票
1 回答
1329 浏览

build - 当我尝试构建铬时,没有这样的文件或目录

当我尝试构建铬时,我得到了关注

这是我第一次构建 chroium,我安装了带有 Windows SDK 的 Visual Studio 2015 社区版,并且还单独安装了 WDK,没有它“gn gen out/Default2”不起作用

知道这个问题可能是什么