问题标签 [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 回答
199 浏览

xcode - osx - WebRTC 链接问题

我正在尝试将 WebRTC 集成到一个 OSX 桌面应用程序中,当我尝试与 webRTC 库链接时遇到了一些错误。问题是:

这告诉我,我没有在我的 中定义这个符号libjingle_media.a,这是真的:

我已经使用以下标志构建了 WebRTC:

当然还有ninja,之前运行过gclient runhooks。知道发生了什么吗?

0 投票
1 回答
2392 浏览

c++ - 即使使用 /FS,PDB 同步写入错误

我有一个简单的 CMakeLists 来编译 detours express

必要的标志在上层 CMakeLists 中设置

然而,当尝试在detours.cpp抛出后编译调试构建每个 .cpp 文件时

失败:C:\PROGRA~2\MICROS~1.0\VC\bin\cl.exe /nologo /TP -DDETOURS_32BIT -DDETOURS_X86 -Iinclude /DWIN32 /D_WINDOWS /W3 /GR /EHsc /FS /D_DEBUG /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Foext\detours_express_3.0\src\CMakeFiles\detours.dir\modules.cpp.obj \Fdext\detours_express_3.0\src\CMakeFiles\detours.dir\ /FS -c ..\ext\ detours_express_3.0\src\modules.cpp ..\ext\detours_express_3.0\src\modules.cpp : 致命错误 C1041: 无法打开程序数据库 'z:\repo\src\ext\detours_express_3.0\src\cmakefiles\ detours.dir\vc120.pdb'; 如果多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS

如果我重新运行ninja detours,那么接下来的 3 个 cpp 文件也会发生同样的情况,然后是接下来的 2 个,然后是最后一个,然后项目就被完全编译了。

如果我运行ninja -j1 detours则没有问题,因为我只是禁用了并行构建。

为什么它似乎忽略了我的 /FS 选项?我正在使用 Visual Studio 2013。

更新 1

这是在 Virtualbox 4.3.10 中的虚拟机内,带有来宾添加。Z:\ 是我挂载的共享文件夹。我已确保在 VM 和主机中禁用 Windows Defender,并在主机上卸载了第三方 AV。

更新 2

我找到了一种避免症状的解决方法并将其添加为答案,但它仍然没有解释为什么/FS实际上没有同步锁。

0 投票
2 回答
3489 浏览

cmake - cmake + ninja + googletest + ExternalProject_Add 的 BUILD_BYPRODUCTS 和依赖周期

尝试使用外部项目来构建谷歌测试。

使用忍者生成器,我收到以下警告。

如果我通过在我的外部项目命令中取消注释构建副产品行来满足 cmake 错误的请求,我会收到一个循环依赖错误。但是,如果我将构建副产品排除在外,那么该项目似乎构建得很好。

我正在使用 cmake 3.4、ninja 1.6,并使用 MSYS2 包在 Windows 上运行。

0 投票
1 回答
2076 浏览

makefile - AOSP 构建错误 make -jN

我正在尝试使用make -jN命令构建 AOSP,但它以下一个错误结束:

有什么帮助吗?

0 投票
0 回答
656 浏览

python - 如何在 Windows 的 Ninja IDE 中更改路径?

我是 python 的新手,开始学习 Ninja IDE 似乎不错。但是当尝试从 NINJA 中导入“telnetlib”模块时出现错误:

我成功导入了“sys”和“time”等模块。

sys.path 的结果:

我已经在路径中有 C:\python27\ 文件夹,并且还创建了一个名为 PYTHONPATH 的系统环境变量,如此处所述: How to add to the pythonpath in windows 7?

在 Windows 上使用 python 时效果很好(来自 python.org)。

谢谢

0 投票
1 回答
1310 浏览

android - AOSP 使构建错误

我正在尝试在 Mac OS 上使用 make -jN 构建 aosp,但它以下一个错误结束:

在整个过程的 43% 处。

0 投票
1 回答
1753 浏览

c++ - CMake + Ninja 构建不会跨库并行化

我们有一个(C++)程序,它被设置为一系列具有嵌套层次结构的共享库。也就是说,libB.so 使用函数 from 并因此链接 libA.so,libC.so 使用函数并链接 libB.so 和 libA.so 等。

对于我们当前的 CMake+Ninja 构建系统,我注意到并行构建似乎不会跨库发生。也就是说,虽然 Ninja 通常会使用 12 个内核来构建,但如果我接触了 libA 中的单个源文件但 libC 中的多个源文件,ninja 将只使用单个处理器来构建 libA 源文件,直到 libA.so 被链接,此时它将使用 12 个处理器来编译 libC 源文件。- 如果在 libA 源代码中编译出错,它甚至不会尝试将 libC 文件编译为目标文件,即使我将 -k 传递给 ninja。

当然,libC.so 的链接需要延迟到 libA.so 链接之后,但是将源文件编译为 libC 源的目标文件不应该因为 libA 的链接而延迟。

关于设置 CMake 文件以表达库之间的依赖关系的最佳方式,我是否遗漏了什么?或者这是忍者工作方式的一个不可逾越的限制?

0 投票
1 回答
712 浏览

c++ - 删除 `CMakeCache.txt` 会导致不再构建 `OPTIONAL` 安装目标

我看到一个奇怪的构建问题,可能有点难以重现。我正在使用 CMake 和 Ninja 来构建一个使用 Qt 5.5 的 C++ 项目。我认为这个混合物的唯一相关部分是 CMake 本身,但 Qt 肯定会给构建系统增加一些皱纹,所以这也可能是罪魁祸首。

这是导致我的问题的一系列事件:

  1. 我向基类添加了一个虚拟方法声明,但忘记将其设为纯虚拟 ( =0)。我在派生类中实现了该方法,但undefined reference to vtable由于缺少基类实现而出现链接错误。
    1. 派生类之一继承QObjectautomoc. 我不认为这与构建问题有关。
  2. 在某些时候,当我试图弄清楚为什么会出现链接错误时,我删除了我的CMakeCache.txt文件。
    1. 我还删除了包含相关虚拟类和派生类的构建目录的整个父目录。我不确定这是否是问题的一部分。
  3. 我意识到我需要将基类方法设为纯虚拟,并成功完成了我的构建。
  4. 问题: ninja install不再安装我的任何二进制目标(所有这些目标都被声明OPTIONAL允许部分构建/安装项目以进行快速迭代),即使在重新运行CMake多次之后也是如此。

我重新删除CMakeCache.txt并重新运行了 CMake 和ninja,但在完全删除构建目录之前,我无法重新安装目标。

我的一位同事也遇到了这个问题,虽然我不知道是怎么回事(他可能已经删除或以其他方式损坏了他的CMakeCache.txt文件,但他实际上并不记得在看到问题之前他在做什么)。

编辑:我又遇到了这个问题,似乎当我将目标设为非时OPTIONAL,CMake 期望在CMakeFiles名为CMakeRelink.dir. 这个目录显然永远不存在。即使设置CMAKE_SKIP_INSTALL_ALL_DEPENDENCYfalse重新运行 CMake 似乎也无法解决问题,这对我来说毫无意义。

编辑 2:认为这是同一个错误,并且有一些解决方法:https ://cmake.org/Bug/view.php?id=13934

0 投票
1 回答
804 浏览

c++ - 如何检查忍者并行构建的返回值?

如何从忍者并行构建中获取返回值?仅当并行构建成功时,我才想执行后续命令。检查美元?忍者命令后没有帮助..

0 投票
1 回答
745 浏览

json - 如何使用带有 rtag 的 emacs

我正在尝试在 Emacs 中使用 rtags,因为 rtags 比 gtags 更好我尝试在 FreeBSD 中遵循 rtags 站点的教程。

现在我可以使用 ninja -t 命令为我的 c++ 项目编译 rtags 并生成“compile_commands.json”...

当我尝试在 emacs 中使用 rtags 导航源时......我意识到我只能使用 .c 扩展名导航,但 .cc 扩展名不起作用......

我试图将一些 cc 文件更改为 c 文件进行测试,它可以工作,但我无法更改所有 cc 文件,因为它不是我自己的文件。