- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我创建了一个非常简单的 C++/CMake 项目:
CMakeLists.txt(注意 -MD
标志):
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
add_executable(moop main.cc)
target_compile_options(moop PRIVATE -MD)
主.cc:
#include "moop.hh"
int main( int, char** ) { return 0; }
moop.hh:
#pragma once
从项目根目录,我运行以下命令:
mkdir build && cd build
cmake -G Ninja -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
cat compile_commands.json
cat compile_commands.json
输出(注意 -MD
标志):
{
"directory": "/home/zbardoo/moop/build",
"command": "/usr/bin/clang++ -MD -o CMakeFiles/moop.dir/main.cc.o -c /home/zbardoo/moop/main.cc",
"file": "/home/zbardoo/moop/main.cc"
}
如果我随后运行 ninja
,可执行文件 moop
将成功构建。但是,找不到moop.cc.d
。但是,如果我随后从 compile_commands.json
复制并粘贴 command
值并运行它:
/usr/bin/clang++ -MD -o CMakeFiles/moop.dir/main.cc.o -c /home/zbardoo/moop/main.cc
文件/home/zbardoo/moop/build/CMakeFiles/moop.dir/main.cc.d
出现:
zbardoo@localhost:~/moop/build$ cat CMakeFiles/moop.dir/main.cc.d
CMakeFiles/moop.dir/main.cc.o: /home/zbardoo/moop/main.cc \
/home/zbardoo/moop/moop.hh
为什么 ninja
不遵守 compile_commands.json
文件中的 -MD
标志?
最佳答案
罪魁祸首不是 Clang,而是 ninga
可以找到缺少CMakeFiles/moop.dir/main.cc.d
的解释如果您查看生成的 build/rules.ninja
并找到:
rule CXX_COMPILER__moop
depfile = $DEP_FILE
deps = gcc
command = /usr/bin/clang++ $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in
description = Building CXX object $out
注意:
deps = gcc
然后看the Ninja manual: C/C++ header dependencies -> deps
:
deps(Available since Ninja 1.3.)
It turns out that for large projects (and particularly on Windows, where the file system is slow) loading these dependency files on startup is slow.
Ninja 1.3 can instead process dependencies just after they’re generated and save a compacted form of the same information in a Ninja-internal database.
Ninja supports this processing in two forms.
deps = gcc specifies that the tool outputs gcc-style dependencies in the form of Makefiles.Adding this to the above example will cause Ninja to process the depfile immediately after the compilation finishes,then delete the .d file (which is only used as a temporary).
(我的重点)。
关于c++ - 当我使用 CMake 和 ninja 构建时,clang++ 会忽略 -MD 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54154524/
我在 Debian 9 上使用 Ninja 1.8.2 使用 llvm-5.0 构建 llvm-6.0。 当我检查系统的 CPU 使用率时,我发现 CPU 不是 100% 使用,并且还有足够的内存。
我有一个 ninja 构建,它似乎卡在特定命令上,但是如果我手动运行该命令,它会很快完成,没有任何问题。 有没有办法让 ninja 输出比 ninja -v 更多的调试信息,这样我就可以弄清楚它为什么
我正在编译一个相当大的库,其中包含许多我需要引入的外部依赖项。每次尝试编译时,我都会收到有关缺少头文件的新错误。然后我必须去追踪在哪里可以找到该 header /库并将其添加到项目包含中。这种先编译后
Meson/Ninja 提供了一种在安装时运行脚本的简单方法。 例如,此行将告诉 Meson 运行 glib-compile-schemas在 Linux 上编译 GSettings 的命令(系统配置
我从以下 github 下载了 stylegan2 的实现: 我将路径添加到我的 PYTHONPATH 变量,现在在导入他们的模型时出现以下错误: RuntimeError: Ninja is req
我正在尝试向“https://poe.ninja/data”发出获取请求,但它无法按照我的预期工作,并且不确定如何具体访问该页面。 我对整体编程比较陌生,所以如果我遗漏了任何明显或完全偏离关于 htt
Ninja 是一个免费的图标分享网站,数量众多,并且免费!据本人粗略统计,大概有1088页图标,每页有12组,每组又很多个图标,所以,图标数量应该在十万级别! 虽然国内也有阿里云的Iconfont
Ninja Framework 中有特殊的预检方法吗? 我试图允许所有预检请求,但是由于我没有使用 options 方法处理所有内容的路由,因此出现 404 错误并失败。 本质上,我遇到了这个错误并试
我已经为我正在处理的 C++ 项目编写了一个 build.ninja 文件。没什么特别的,只是一堆编译并链接到可执行文件中的 C++ 源文件(见下文) 我想添加一个安装目标,它只是将可执行文件复制到/
使用下面的代码我得到以下错误:NinjaSteps.cs(16,13):错误 CS0103:当前上下文中不存在名称“忍者” 我用来编译的命令行是:csc/target:library/referenc
我正在尝试向 Ninja Forms (v. 3.3) 添加自定义字段。在任何地方都找不到完整的示例。 仔细研究代码,过滤器“ninja_forms_register_fields”似乎可以解决问题,
我在 WordPress 安装中使用 Ninja Form 插件。 我的表单有 3 个输入文本字段。 按下提交按钮后,我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证此输入之一。 如果该
我正在尝试使用 CMake 构建从 GitHub 获得的一些代码,但不断收到以下错误: CMake Error: CMake was unable to find a build program co
我在 WordPress 安装中使用 Ninja Form 插件。 我的表单有 3 个输入文本字段。 按下提交按钮后,我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证此输入之一。 如果该
我安装了 Ninja Forms 和 ACF for WordPress。我在 Ninja Forms 中有一个隐藏字段,我需要使用 ACF 字段中的值重新填充该字段。 我尝试了简单的 jQuery
我创建了一个带有 Ninja 表单的 WordPress 页面,用于收集有关产品的各种数据,包括一些上传的图像。通过单击“输入”项可以从主菜单访问包含表单的页面,因此用户无需访问后端即可上传产品数据。
在NINJA FRAMEWORK Controller 中返回JSON的同时,我们如何返回自定义格式的JSON。 return Results.json().render(MyPOJO); M
我有一个外部 jar,我想添加到我的 ninja framework 中应用程序。 我已将该文件包含在根目录中,但这不起作用。 我还尝试使用 IntelliJ IDE 将其包含为依赖项。 这也不起作用
-bash: ninja: command not found 在终端中找不到错误。我正在为 iOS 构建 webrtc,因此我正在关注 WebRTC Guide当我在终端中运行以下命令时,它显示 -
我从 SitePoint 购买了一本看起来相当合法的电子书,但是当我研究代码(逐章)时,我在 8 章后就卡住了。到目前为止的代码已按规定工作,但我已经删除并重新编写了这段代码四次,但我终其一生都无法找
我是一名优秀的程序员,十分优秀!